Dont use display lists, they are deprecated from the OpenGL API and never really been a good solution, use Vertex Buffers, or even better Vertex Buffer Objects.

As chronozphere and others have mentioned you can check the Phoenix particle engine for example on how to use vertex buffers. There's also the tile engine source that uses vertex buffers. (http://www.phoenixlib.net/files/phxTiles.zip)

Also to note, that for certain things, like static backgrounds, gui's and other stuff, intermediate mode (glVertex etc) is fast enough. For things like particle systems, fonts, tile engines and so forth VB/VBO's will be faster.

But as always, every vertex you don't render is alot faster, so use frustum culling and other technices to determine what need to be rendered and what can be skipped.

The one thing i feel is better using VBO's and VB's is that it is easier for the driver, the intermediate mode causes some headaces sometimes due to bad driver support (Intel someone?).

I'm rewriting the core of Phoenix to use vertex buffers for all the rendering at the moment as a part in making it more streamlined and to be able to support D3D, it is turning out quite nice.