Ed,
For the most part, 'ordinary' g-codes and M-codes are accepted 'as is' by most machines. A few require special syntaxes, and the PP and post-build-processor features are fully-capable of accommodating those oddities.
About the only thing you'll probably have to 'customize' (if anything) is the initial M-code 'setup' sequences.
Even for many 'oddball' machines, that seems to be about it.
The 'default' PP and the Mach-3 PP are not great examples for someone wanting to do a 'full-custom' PP, because they revert to native CB defaults for almost everything.
But we have lots of examples on here, and among the users of PPs that have pretty-much EVERY command spelled-out. And the 'help' files while in CB are IMMENSELY helpful. The capabilities and range of features of the PPs are fully-discussed.
There are users here who believe that 'other' CAM software will be more-capable at accommodating weird, old, or obsolete machines or completely 'custom' uses of normal machines not supported by ordinary g-code and m-code.
Such is not my experience. The flexible PP facility of CB makes it possible to support odd-ball machines NO other CAM will manage properly!
But... you do NOT have to be a 'programmer' to write your own post-processor. The PP is just a set of 'rules', not program code. You would need a little programming background (or at least willingness to learn) to write your own post-build-processor. But there's ready help here for that, if you need it.
Lloyd