One of the first thing I did was adding a mechanical limit to the Z-stage. The X & Y motors with the belts are not strong enough to cause any damage if hitting the mechanical limits. I do worry about the Z axis causing damage since it has the screw pitch advantage for added force. For safety I added a clamp on the lead screw that
creates a safe limit if everything else fails. See Picture:
For accurate zeroing I added an opto-interrupter that is repeatable to a few microns, much better than the stability of the wood frame and table mounting.
I have the opto set so it triggers about a mm above the table so I never need to worry about hitting the table. I have in the software turned off the limit switches and only use them for homing.
Then in the startup code I have: G28 X0 Y0 ;move X/Y to min end stops G28 Z0 ;move Z to min end stops G92 X0 Y0 Z0.95 E0 ;reset software position to front/left/z=0.0
Tweaking the Z value will allow fine adjustment of the table without trying to fiddle with moving microswitches around.