Well, I'm just getting used to the intricacies of offsets myself.
G54 is selecting Work Offset #1. There 254 work offsets available.
If I understand correctly, there's 2 important offsets: the work offset values, and the "temporary" G92 offsets (and G52, which sets the same offset). G92 offsets are relative to what's already offset in the WO. G92 can be "canceled" entirely, which just sets the G92 offset to zeros, but it won't affect the current WO. And changing WO#'s won't change the G92.
When you go to the DRO and hit "Zero X", that changes the Work Offset for X for whichever set of offets you've got active. If you manually enter something into the DRO, that also changes the WO.
And there's the Machine Coordinates, which AFAIK nothing changes except actual movement commands. If you jog around without the controller on, or with "Offline" clicked, or "use" the knobs on the machine's axes, it gets out of sync with the machine (if it ever was in sync). Sometimes the Machine Coods can get downright insane if you're testing something with the controller off. Now as long as you've got offsets set, that won't actually matter, unless the G53 mode, or G28 gets invoked. Some CAM software automatically puts in a G53 move at the start and end just to mess with your world. Since you only set Offsets, the actual Machine Coords that G53 or G28 are trying to move to could be anywhere. I've had it try to slice through the stock, table, or run the axis into the column. Surprise!
I don't get the Machine Coordinate thing. AFAIK it was meant to be set with Home switches on the machine, but in the absence of those, there are the aforementioned ways to screw it up, but no simple way to FIX it. I tried and Mach3 won't let you enter a value, outside of going into Offline mode (or physically turning off the power on the controller), zeroing the offsets, and telling it to move to zero, which is not an instantaneous process, it actually has to step the "move". With the Smoothstepper and G540, even this is impossible, the SS plugin ignores the Offline status and it'll Mach3 will E-stop itself if the G540 is off.
Look under the Diagnostics (Alt-F7) tab to see what's going on and what operation changes what and how the current "coordinate" is calculated.
Anyhow, for height, use a caliper to measure paper thickness. Say it's 5 mil. Slow-jog the Z-height at dead-slow speed until the paper just barely slides free. Enter the WO Z as +0.005 in, because the tool tip is exactly 5 mils over the surface.
I think Fixture Save does the saving you're looking for. But I don't usually keep work chucked and exit Mach anyways. In fact, with microstepping controllers, if you cycle power on the controller it's impossible to retain the exact position, although on a Taig the error experienced from forgetting the fractional step of the microstep index is only +/- 0.000125 in, which is really really small.
And just to prepare you: at first glance, G-code appears to be a horribly ill-conceived language. Guess what, it IS. It's archaic. People will say it was because it was written for low-capacity machines with little RAM, which was never the cause of the problem. Such things as substituting A,B,C for X,Y,Z parameters, insanely bad Modal commands, etc were added ad-hoc by machine operators with no sense of logical programming at all, and the hardware could actually be simpler with a smarter implementation. BUT, you've just gotta accept it. It's a standard for now. The only reason I mention it is that, many times, you're gonna look at it over and over and say "well, that looks pointless/stupid/crazy/ineffective, I must be reading it wrong". No, just read what it says for the command, exactly, literally.