GRBL-M3 is the simplest profile we have - it uses G0 and G1 moves only, with M3 to turn on the laser and M5 to turn it off. G1 moves will include a feed rate (F) and spindle power (S) parameter to vary the movement speed and power when those values need to change, and otherwise they’re just “remembered” by the controller (modal, as Joe pointed out).
The GRBL profile uses M4 by default to enable the laser, and this means “vary the power as the movement speed varies”, which produces cleaner vector marking because the power is reduced when the machine slows down for sharp corners.
These and the other profiles, like Smoothieware, Marlin, etc, all know the specifics of what GCode format those controllers need, what size the receive buffer of the hardware is, what baud rate they use for communication, any required settings for the USB connection, and it knows special commands for things like test firing the laser, setting firmware parameters, and so on. Since LightBurn is much more than just a GCode generator we need to know these things, and we’ve initially restricted how much can be user edited to prevent errors.
We do have a plan to make a generic GCode profile that doesn’t control the machine, but will let you edit the output GCode format, but work on that has not started yet.