When I built my machine, I included limit/home switches from the get-go. I'm using purchased hall effect switches, one per axis, with two magnets; one on each end of each axis. I installed the magnets very close to but still a smidge away from the hard stops.
Once I had this done and my spindle tramed and square, I made some aluminum corner/ fence blanks and positioned them so that they stuck into my cutting area just a little bit. I then homed my machine and cut the face of the fence at 0,0. I now have a repeatable 0,0 position on my table.
I use fixtures for most everything. When I machine a new fixture, I butt it up against the fence and then cut it after homing. If I'm not using a fixture, I've machine 1" spacer blocks so that I can hold down work at a known distance from my 0,0. Now, every time I switch fixtures or whatever, I simply type in the offset or choose the offset that I designed into the fixture.
If I didn't have home switches, I'd already have wasted countless hours of my life.
When it comes time to re-tram my spindle, or remove and replace the table, or bump a magnet or whatever, I simply re-mount my fence "in" a little and re-cut my 0,0 point.
p.s. I copied this idea from Ger. - Excellent advice!
-Andy B.
http://www.birkonium.com CNC for Luthiers and Industry http://banduramaker.blogspot.com