Projectile doesn't go towards crosshair's direction!

The comments tell you what it does. The DotProduct gives you the amount of one vector into the direction of another one. So, for example when your vehicle is drifting and you want to know the percentage of how much of the speed is forward and how much sideward, you just get DotProduct(Vel,WheelRight) and DotProduct(Vel,WheelForward). Same with the ShootDirection stuff. For two normalized Vectors (Rotations, converted to Vectors, are always normalized), the DotProduct always will be in the range of -1 to 1 (Because thats the definition of a normalized vector, all its components [XYZ] sum up to exactly 1), so 0.5 is the median direction vector.

You really should start debugging more with breakpoints and testing around, a lot of stuff really is self explaining