I'll try...

I put 6-10 particles with a random rotaion and random size (about 20-60 i think). The color is 255, 255, 255 (or FFFFFF or white)...

Then the loop:
I rotate each particle with a fixed velocity
I scale each particle with a fixed scale
(you could also slighly change the position)

I other words:
[pascal] with Particles[Index] do
begin
// gravity
Velocity.x := Velocity.x + (Gravity.x *LagCount);
Velocity.y := Velocity.y + (Gravity.y *LagCount);
Velocity.z := Velocity.z + (Gravity.z *LagCount);

// Position
Position.x := Position.x + (Velocity.x *LagCount);
Position.y := Position.y + (Velocity.y *LagCount);
Position.z := Position.z + (Velocity.z *LagCount);

// Rotation
Rotation.x := Rotation.x + (RotVelocity.x *LagCount);
Rotation.y := Rotation.y + (RotVelocity.y *LagCount);
Rotation.z := Rotation.z + (RotVelocity.z *LagCount);

// Scaling
Scale.x := Scale.x + (ScaleVelocity.x *LagCount);
Scale.y := Scale.y + (ScaleVelocity.y *LagCount);
Scale.z := Scale.z + (ScaleVelocity.z *LagCount);

// Color and alpha
Frames := Particles[Index].LifeTime / LagCount;
BeginColor.r := BeginColor.r - ((BeginColor.r - EndColor.r) / Frames);
BeginColor.g := BeginColor.g - ((BeginColor.g - EndColor.g) / Frames);
BeginColor.b := BeginColor.b - ((BeginColor.b - EndColor.b) / Frames);
end;[/pascal]

LagCount is the the timers speed. (1000 / FPS).