You don't need to derive from TList. I always create a TList object inside my objects, because you might want to add lists in the future. Only derive from a class when your class has a "Is a kind of" relationship with the ancestor class. In this case, it isn't true, because the sprite-engine isn't just one list of sprites.

For example, in the DXSprite unit, the TSpriteEngine contains a "Sprite" list, a "Draw" list and a "dead" list.

The sprite-list contains all the sprites present in the game. The draw list contains all the sprites that are visible in drawing order (so you don't have to sort them every frame). The dead-list contains all sprites that are dead and should be removed from the game. This is usually only possible at the end of a frame, since other sprites might rely on it while the frame is being computed/rendered.

You should take a look at that unit. I found it really helpfull when i was learning this stuff.