Your guesses look correct to me. M6 is tool change. M6 is interpreted by Carbide Motion (Grbl doesn’t understand it) and CM commands via gcode it generates to move the spindle to the top and turns it off, prompts you to change the mill and waits for you to hit continue. Then it moves the spindle over the probe and probes to measure the tool length, then it moves back to the previous X position, turns on the spindle and moves back to the previous Z position,and resumes playback of the gcode.
That first G1 is supposed to move very slowly (20mm/min) back to the top of the board (just barely touching if you’ve zero-ed your Z properly) and then the G0 Z0.1 moves up as quickly as possible 0.1mm (retraction) which is kinda moot because the preceding M06 apparently does the tool prompt dance again (I didn’t know that an M06 without a T parameter would do that, but hey).
I haven’t done PCB milling yet and I’m surprised at this g-code. Why does it generate an M06 with no tool number? Why is it generating a 0mm touch?
Did you see this thread? Nomad: Great results milling PCBs from Eagle