So I had a chance to read GRBL documentation (too tired to do it last night) and, based on the GRBL documentation, this looks like exactly what I want:
Door: (New in v0.9i) This compile-option causes Grbl to feed hold, shut-down the spindle and coolant, and wait until the door switch has been closed and the user has issued a cycle start. Useful for OEM that need safety doors.
What I could find about that feature is:
"You need to enable it in config.h and it'll use the feed hold pin. It assumes normally-open switches connected to ground, but you can use normally-closed connected to ground with the INVERT_CONTROL_PIN compile option.
The safety door will disable the spindle and coolant outputs and will only allow you to resume via '~' once the switch is closed. It'll repower the spindle and coolant after a configurable dwell before resuming the program."
So it looks like a custom compile of GRBL is needed and then it should control the spindle and coolant (or shop vac) when a feed hold is pressed and also give a "spin up" delay when resuming. Sweet!
Now the question is what type of switches the Xcontrollers use and if they would need to be rewired to make this work and then also making sure that a custom compile of GRBL won't cause any issues with normal operation (I'll be using UGS for my Gcode sender so it should be okay from what I can tell).