Particle system generally work, by spitting out lots of quads/sprites/pixels, each individually controlled. Typically, each particle is a type object.
Type particle
Field x,y,z
Field speed
Field life_time
Field timer
Field alpha
End Type
Each particle that is generated is basically
p.particle = new particle
p\x = 10
p\y = 10
p\z = 10
p\alpha = 1
p\speed = 5
Obviously each particle would have random values to a certain extent. Simple update (move and check life time of particle) and delete the particle if it gets too old. :o)