If you have Use Spindle Feedback in Sync mode chosen (Ports and Pins, Spindle Setup) then every time you command a feedrate Mach will look at the spindles RPM and feed accordingly. If you change RPM between feed calls then Mach will not change the feedrate and that is what has happened to you.
For situations like you had there should be a fault signal from your VFD to Mach to tell Mach to E-Stop. There may or may not be a fault signal output from your VFD for that but I would think there would be. I had a macropump that would look at commanded RPM and actual RPM and if different by, I think, 10% then it would fault Mach, unfortunately at the time it would only work if I disabled modbus and as I needed that for the turret I couldnt. Now I have a servo on the spindle so I can set up the fault signal to tell Mach if the spindle has faulted so I dont need the macropump.
Adding to the feed question if you had the feed call on each line of code then the next line of code would not have fed at the normal speed, however it probably still would have fed along at a creep.
I hope the latter will be fixed in Mach4, we will see.
Regarding CSS, it doesnt work correctly I am afraid and never will in Mach3 when using G95. Mach Rev4 will , I am assured, fix this, again we will see.
Its been a while but if I recall what happens in Mach 3 is the feedrate will start out correct but as the spindle increases the feedrate will stay constant with respect to time but slow with respect to per rev and vice versa.
Hood