A projectile is an actor that moves at a constant speed each tic (unless A_ScaleVelocity or similar function is used to accelerate or decelerate it). For very fast projectiles, the normal collision code does not work and the actor should instead inherit from FastProjectile.
When a projectile collides, it explodes and enters its death state, although technically it is not killed. If the Crash and XDeath states are defined, they may also be entered instead of the Death state, according to the collision type:
A non-bleeding actor is an actor with the NOBLOOD flag.