Particle systems are something that can add much realism to as scene. They are axis-aligned textured quads. The commonality is that they represented by some point in space, they don't usually collide with each other, but they can collide with other objects in the scene.
When we implement a particle system, policies of the particle system will change, but the basic algorithm stays the same. Some things to note, we don't want to new a particle every single time one comes to life. Instead, we would rather use a pool of particles and take currently unused ones and then use them again. Usually there is some upper limit on the number of particles that one particle system can contain so they don't go out of control. Usually, particle systems have transparencies (so they aren't always square). In order for transparency to properly work, you have to render transparent objects from back to front.
For our first crack at implementing a Particle System, we will punt on the depth sorting and collision with other objects in the scene. We will use the OpenGL extension GL_NV_point_sprite (which greatly simplifies the task of implementing billboards) to implement the particle rendering.