Ah, when you're blitting sprites around a screen, the sprites you are plotting would be your 'bobs' (http://en.wikipedia.org/wiki/Blitter_object).

Object-pooling is a way to avoid the slowdown associated with creating and deleting objects. For example, if I want to make a bunch of sprites fly around, I can create several thousand sprites when I'm setting up the game (so take a few seconds hit on performance while you make all of those), and then just use one of those whenever I need a new sprite. You can recycle them, so if your projectile gets used up (like a shell explodes), you can throw the sprite object back into the pool to be used again.

The problems with it are that you get that bit of slowdown when you're creating the pool (which isn't a big problem, as that only happens once), you need to allocate a pool bigger than you'll actually need (which means your memory usage will always be higher than if you hadn't pooled), it adds a little bit more complexity when you're trying to create objects (which is a big issue if your code is as messy as mine), and it might be that creating a small object with few variables in it would be faster than going through the process of looking up and recycling one from the pool (and this is the bit I want to know... but I guess it wouldn't be a big deal for me to just check myself).