So let me tell you what happened exactly:

As i mention before we never used the ATC until last week by 'accident', the machine went to Zero position (or tool change position) and started the tool change sequence (turning the tool magazine => lowering the tool using the pneumatic piston => swapping the tool using the arm ...) , but when it got to returning the piston to its initial position it couldn't due to a damaged air tube and the arm never moved also due to a malfunctioning contactor that supplies the arm motor (which i fixed later on).
That's when i got 2 errors: the first one telling me about the piston not in the home position and the other something about the tool number/counter (i can get you the exact code number and name if needed) , so i fixed the first one by manually returning the piston to initial position and the second error by toggling the tool counter switch until the alarm was gone ( i matched the counter with the registered tool number) . after that i couldn't move the Z axis anymore only in Handle mode.

Now answering your questions:

1. I can only reference (zero return) X and Y axis, and yes there a lights for each axis on the control panel that blinks during homing and will stay on when its done. i cannot reference the Z axis it will keep blinking waiting for the Axis to go to zero ( i even tried manually pressing the limit switch to tell that the axis is at the home position but it did not work)

2. The machine uses a limit switch on each axis, the limit switch on the X and Y axis got 2 switches the first one used for referencing and the other is physical limit working as an emergency stop, but the limit switch on the Z axis got 4 switches the first 2 same as X&Y and the other i'm not sure about but i think they are used to get to the tool change position ( i will double check their use tomorrow)

3. I tried the P + CAN at start up near home position and it made no difference.

4. i tried the single block for tool change but the machine waits for the Z to be in position, i can run any program for X and Y and when it get to a command for Z it waits for it to move.

Its been 2 weeks and i did a lot of troubleshooting, i'm really open for any suggestion, i'm not that experienced but i can manage.

Thank you !