I don't have experiente with C# but from what I see, you are trying to acces the same object that you destroy in the Projectile script.Try this : declare a new variable to hold a reference of the instantiated projectile ( you are using the same identifier, "projectile" for the projectile prefab that you instantiate, and also for the variable that holds the reference to that new instance).
public class MissileLauncher : MonoBehaviour
{
public Rigidbody projectile;
public Rigidbody spawnedProjectile;
int speed = 50;
void Update ()
{
if (Input.GetButtonDown("Fire1"))
{
spawnedProjectile = (Rigidbody)Instantiate(projectile, transform.position, transform.rotation); //Instantiate projectile
spawnedProjectile.velocity = transform.TransformDirection(new Vector3(0,0,speed)); //Set projectile velocity
Physics.IgnoreCollision(spawnedProjectile.collider, transform.root.collider); //Avoid projectile an hero
}
}
}
This should work for you.