Cool, glad things are working
As for the keys being different in the spec. I would guess that the spec calls out the actual key values, i.e. you could call DigiKeyboard.sendKeyStroke(0xE3); and it would send a single windows key press that opens your windows start menu. I haven't tested this though, so don't quote me on it.
The modifiers on the other hand need to be individual bits, so you can combine them. If you look at the code (I added the binary values as comments):
#define MOD_CONTROL_LEFT (1<<0) //00000001
#define MOD_SHIFT_LEFT (1<<1) //00000010
#define MOD_ALT_LEFT (1<<2) //00000100
#define MOD_GUI_LEFT (1<<3) //00001000
#define MOD_CONTROL_RIGHT (1<<4) //00010000
#define MOD_SHIFT_RIGHT (1<<5) //00100000
#define MOD_ALT_RIGHT (1<<6) //01000000
#define MOD_GUI_RIGHT (1<<7) //10000000
So for example if you want to send Ctrl and Alt together, you can send MOD_CONTROL_LEFT | MOD_ALT_LEFT, which will send the Modifier key 0x05, or in binary 00000101. By making each modifier a separate bit you can combine them as you like. I couldn't find anything about sending modifier keys in the spec, so it might up to each device how they implement it.
Hope that makes sense,
T