Richard -
The home switches are just a way of telling the machine where it is. They can be anywhere. If you set the automatic zero option then the "machine co-ordinates" will zero at that location.
The location might be no earthly use to run a program from - for instance my machine is a lathe, with a milling machine attached. The home switches are as far left (under the spindle) and as far towards me as the table will move.
All my lathe programs tend to be written with Z0 at the end of the work peice, and X0 on the center line of the lathe. My milling programs tend to be 0,0 at the bottom left hand corner of the table. To facilitate this you have an offset table G54 to G59 and there are many available under G59 (255 I think - but I might be wrong).
You home your machine, which sets the machine co-ordinates at 0,0 then select the appropriate offset as your program co-ordinates. The table can then move to the correct position to interpret your program.
Is your brain still hurting???