Quaternion.FromToRotation (transform.forward, targetDirection);

This is in a RocketLauncher script, which an enemy's weapon contains:

        var lastVisiblePlayerPosition = Player.transform.position;
        var targetDirection = lastVisiblePlayerPosition - transform.position;
        transform.rotation = transform.rotation * Quaternion.FromToRotation (transform.forward, targetDirection);
        var instantiatedProjectile : Rigidbody = Instantiate (projectile, pos, transform.rotation);
        instantiatedProjectile.velocity = instantiatedProjectile.transform.TransformDirection(Vector3 (0, 0, initialSpeed));

The projectile's rotation is not correct. What is the problem?

My guess would be that your Quaternion multiplication is the wrong war around as I believe order matters much like Matrices. try

transform.rotation = Quaternion.FromToRotation (transform.forward, targetDirection) * transform.rotation;

But you may want to simplify your script even more to this:

transform.LookAt( Player.transform, transform.up );
var instantiatedProjectile : Rigidbody = Instantiate (projectile, pos, transform.rotation);
instantiatedProjectile.velocity = instantiatedProjectile.transform.forward * initialSpeed;