Well, I'm not that seasoned and I cant provide you with any template as I have none but I can answer some of your questions.

$1, $2, $3 etc are simply your head1 head2 etc, only you cannot run the heads separately. For wait codes either a mode change or an exclamation !L1, the L1 just being a label, must be called in both $1 and $2, its the same as your M200+ codes (there are actually a few ways to use the exclamation and iirc you can simply use !). The L20s are programmed in both the G800 mode codes and newer G600 codes which I know better to be honest. G610 is single $ machining with the gang tools, G620 is simultaneous ID/OD working with the back spindle z axis superimposed onto the main z axis, G630 is for simultaneous work on the front and on the back, G640 isnt really used and is for a double ended front drilling holder if i recall. G650 is your pick off mode and G600 cancels your modes and is pretty much the same as G610. You must have the mode calls in each $, or head if you will.

The variables at the end you refer to are $0, or the machining data in a program you will see downloaded from the machine. In the machining data you set things such as the bar diameter, the positioning point (how far above the material to index to rapidly as the tool is called usually .05'), cut off feed rate and speed, part length (this sets your starting position). Coming from a star which I am just learning, the part length which sets the z axis start position is set with #2601 in the program, but with a citizen you tell the machine the part length, and after you manually cut off the bar and move to start position then you can start your program - the machine automatically calculates the distance from the guide bushing to start from. In your program at the end you just move the axis back the required length, thats one difference between the two.

Citizens machine from the opposite direction but the cutting face of the tools face you as you are looking into the machine, so the direction of G2/G3 is still the same, just imagine you are standing on the other side of your star. I personally cannot 100% tell you if tool nose rad comp is any different as I havnt used it much in my time yet.

The rest is just learning the M and G code differences. One star/citizen difference is that you must specify which spindle you wish to turn on, ie S1=2000 M3; S2=2000 M23;. S2=2000 M3 would not start the back spindle, M23/24/25 is for/rev/off respectively for the sub. You can command the sub spindle from $1 though in this manner.

As I said before you cannot run each heads program independently as you can on a star since it is loaded as one, but there is a "last part program" section at the end of a program that allows the sub spindle to do its work if last part is selected and the machine is in single cycle. At the end of every citizen program youll see the code

G999;
;
N999;
M2;
M99;

In $2 inbetween G999 and N999 you either use a goto and have it go to the top of $2 to finish the part in the sub spindle, or you just copy all the code about the G999 into the space between (which isnt smart really). This is how you can finish a part that is in the sub spindle without running the main.

Another major difference is the use of G50Z instead of G120 to set absolute Z zero. Then you use G50W to shift the z zero for your tooling rather than in tool geometry and the axis specificed adjusts accordingly. As far as ive read so far you cannot command a G50 shift when G120 is set on a star, and it is not used in the star programming on our machine which I am very new to, so forgive me if Ive made some errors.

I cant really think of any more glaring differences, ive noticed that a lot of people program in a bunch of different ways though so I hope I helped a bit,

Cheers'