I am running Grbl 0.9. (I may have been having a similar issue with Grbl 0.8 and didn't realize it)
16mm Die 24 +1 +1_0001.ngc (I don't expect this one to work)
is the original unmodified output from Inkscape using the Gcodetools extension. It doesn't add F and S values in the header so the gantry crawls to the initial job position and then the first speed setting is defined so it begins moving at the defined speed, but the laser never turns on. I know that it has M3 in the header, but that doesn't matter because I'm using Grbl 0.9 and no S value has been set. It looks like the Gcodetools extension is made for rotary tool CNCs running Grbl 0.8. It turns on the tool at the beginning of the Job with M3 and uses Z axis commands to raise and lower the tool. This is not a big deal because Inkscape is still the best free tool I have found for the type of precise layout I need to do and performing a simple Find/Replace on the output file to replace the Z commands only takes a few seconds.
16mm Die 24 +1 +1_0002.ngc
has been modified to remove the initial M3 in the header and replace it with S50 to set the pwm speed (in this case, power level of the laser) and F10000 to get gantry moving faster to the initial cut. I replaced all of the Z0.100000 (tool up) commands with M5 to turn off the laser and Z-1.000000 (tool down) commands with M3 to turn it on.
In theory this should work, however I never got to test this theory. As soon as it gets to the first G00 line, the laser turns on and remains on until the M2 command at the end of the job. Something about the G commands is making my machine act screwy.
16mm Die 24 +1 +1_0003.ngc
is what I did to achieve the output I was looking for. Instead of setting an initial pwm speed, I left it 0 and replaced Z0.100000 with S0 M5 and Z-1.000000 with S50 M3. S0 by setting S to 0 and only changing the value to high when I wanted the laser on, I got the intended output. I added the M codes, but they really aren't necessary in this case because the laser will activate with power level 50 as soon as the G command on the next line is sent.
I found that if I manually send S50 I can use M3 and M5 to turn the laser on and off. However, if I manually send S50 and then G00 X93.999999 Y17.999992, the laser turns on and doesn't turn off with M5. I have to send M2 (program end) to get it to shut off.