What you have proposed, a "lag free projectile", is actually impossible, though the algorithm you propose is not. (There is always a communications delay between a server and client, so no matter which algorithm you choose, you will inconvenience someone). Your algorithm chooses to inconvenience the target. Imagine this scenario:
Your proposal sounds like a mix between trusting client-side calculations (which makes your game vulnerable to exploiters, who will then have the power to shoot everybody regardless of where they are on the map or how many walls are between them, unless the server attempts to do sanity checks) and server-side calculations. By default, player movement is client-side and projectiles are a mix (which can cause stutter or jumps as they progress through these time gaps); look into NetworkOwnership if you want more details on that.
No matter how you proceed, you'll need RemoteEvents/RemoteFunctions to communicate the information from the server to the client and vice versa, see http://wiki.roblox.com/index.php?title=Remote_Events_and_Functions.
There is also an article that talks about this sort of thing (with a "lag free cannon"): http://wiki.roblox.com/index.php?title=Fighting_Lag