When your machine boots up and homes itself, it establishes the machine coordinate system, and the origin of that coordinate system is typically set by parameter. The machine coordinate system is called G53 and it is the 'real coordinate system' upon which all the work shifts are based. The work shifts are your G54 to G59 and the coordinates associated with the work shifts are simple distances from the machine zero of the G53 machine coordinate system. You can always cancel a workshift by calling another workshift or making a move to a position in the machine coordinate system directly by calling a G00 G53 X.xxxx Z.zzzz
G92 has a lot more power than a workshift. It applies new values to the machine coordinate system axis, essentially moving the G53 origin somewhere else (this is a simplification, not exact but close enough to serve as a warning).
Thus, using a G92 supercedes all workshifts and will move them all, because the G92 represents new values assigned overtop the G53. Think of it as similar to reprogramming the axis displays to show values of your choice. Although in the background, the machine may maintain its own secret set of registers for the current position, what you see displayed will be fictitious axis values, but real enough to affect every program you run.
You cannot cancel a G92 because it is not a workshift. Rather, it was a renaming of the G53 axis positions, so to cancel the effect of calling a G92,you must return to a known position in the machine coordinate system, and then rename the axis back to what they 'should be'.
The danger of the G92 is that it is an immediate transposition of the coordinate system, and cannot be undone, and if a mid program restart is attempted with the machine out of position, and the control reads the G92 again, it will royally screw your tool positions from that point forth, because the G92 is applied always to the current position of the machine.
In lathe, you can and should return to home always, if you call a new G92 for each tool. Never restart the program from the current position after an abort. Staying with workshifts is the recommended safe way to operate nowadays. However, if you have to run an older control that has no workshift capability, then the above mentioned methods should keep you fairly safe.