On linuxCNC there is the G53 machine coordinate system (MCS), and there are also 9 work coordinate systems (WCS), G54, G55, G56, G57, G58, G59, G59.1, G59.2, G59.3. Each of these is an offset from the MCS. So it is offset in X, Y and Z. You are setting the offset when you do a "Touch off"
If you are using the Axis interface in LinuxCNC, then on the jog page is where you set the offset by using the "touch off" button. Move to the point you want to be zero in any axis and the make sure the axis is active (black dot), and then press "touch off". Whichever axis is current (depicted by the black dot in front of X Y or z) will be "touched off. If touching off Z, you are setting the offset for the WCS shown in the popup (G54-G59.3)
The 9 WCS's can be used in one program. For example, if you 3 vises on your table you can run 3 parts at the same time by assigning the location of the parts in each vise to a different WCS.
All of this is described in pretty good detail in the manuals.
Documents