The approach you mentioned. As I understand... If i fire a bullet, It won't actually fire until the server recieved the message and sent it back to me?
That may work if lags are approx. the same for all clients. I did not mean exactly this approach, but rather way to calculate lag time which can be used for compensation.
Yes, you should try to send as few as possible position updates and use interpolation. In extreme case like bullets, you need only one message with initial position and velocity which are enough to reproduce same trajectory on all clients.