The biggest challenge in making particle sims fast & thus appealing is in allowing particles to react to nearby particles.
One solution is Spatial Hash Grids, where the scene's split into cubes, such that we can look up all particles in a cube by hashing the cube's coordinate. Look up all contiguous cubes as well to cut down how many other particles we examine when updating the position of each particle.
Particle sims can be used to render hair/fur/grass, fire/liquid, & more!
2/2.1!