Since ProtoGen/HL7 implements HL7, you need to know about HL7 in order to successfully work with it. On the other hand, once you know HL7 and you know the basics of how ProtoGen/HL7 works, you won't need much more than your HL7 standard document for reference. Most often you will have to refer to the HL7 document in order to see the data elements that you need for your purpose, their name, and how they relate to each other. What you do not need to know is the order of the data elements in a sequence, since with ProtoGen/HL7 you refer to any data element by it's name, i.e. a C++ identifier. This is very convenient and reduces error frequency.
HL7 defines standard names for its data elements. Since a HL7 data element name may consists of multiple words, protogen reduces the identifier length. This is done for your convenience as a programmer, since you do not have to type 20 or more characters for a single name, but only about 5 to 10 characters, and the identifiers are still quite expressive and readable.