1) You're g-code should be stopping the spindle before an M6. The M6 macro does not stop it.
You can always modify the M6 macro, bu adding this line near the beginning.
exec.Stopspin();
2) If the current tool # is the same as the new tool number in the M6 line, than no tool change will take place. The macro will give you that message, and then exit.
3) No, the Z axis does not retract after finding the center.