This is the answer that doesn't ask you anything:

vec_for_screen calculates a 3D position in world space, so, if you use it with VECTOR->z = 0, the position should be directly on the camera plane. Other than that, use the VIEW->clip_near distance as Z-parameter to make sure that the bullet is created in such a frontal distance, that it is seen in the very first frame.

This is the answer with some silly questions:

Why would you create the bullet at the crosshair? I believe that the player wants to -hit- the spot with the weapon on which the crosshair points. It is also obvious, that if you are empowering the user with a common weapon, he or she might expect that the weapon (if not visible on the screen) is hold beneath the screen on the left or right side, so, create the bullet at the muzzle and -trace- from there to the point where the crosshair points to, to analyze the line of fire instead of penetrating with c_move the worldspace with such a small collision hull a typical vanilla bullet has (just in the case if you are not shooting with watermelons smile).