Normally what happens is, the bullet dies but before it does, it tells the engine to apply an effect at the location where the bullet hit.

If you build in a generic effects system, you'll be able to make your bullets do all sorts of things when they die and the explosions can live on long after the bullet has died.

I'd personally create an explosion sprite and a bullet sprite. They both have quite different tasks to do.

You should generally make a class do *one thing* and do it well.

If you wanted to make other things explode in the same way, if you put the animation and sound code in the bullet, you'd have to copy this code to other objects. This common code would be better placed in another class.