A particle system is a fairly low-level concept in 3D graphics, though it has only recently become practical for use in a gaming environment. A particle system allows a user to generate complex objects fairly easily and with relatively little resource usage. For example, consider a lawn, covered in grass. If you were to model each individual blade of grass and display them all as meshes, the graphics load would be enormous and it would take a long time to make, too. By defining "template" blades of grass and defining the area that the grass should cover, a particle system can randomly or algorithmically generate the lawn quite quickly. Similarly, the "particles" (blades of grass in this example) can be individually affected for very realistic effects.
The lawn effect is exactly what Terrain Decoration Layers do in the engine's terrain system; in the strictest sense of computer graphics, that is a particle system. However, when we speak of particle systems in Unreal, we mean systems that generate particles dynamically.
The current build of the Unreal engine has a particle system built in natively. (Second generation according to Epic, Third generation according to the Wiki.) It allows you to generate a particle system based on sprites, meshes, stretched sprites ("beams") or "sparks." Digital Extremes also implemented two additional particle systems that were released with UT2003. All three systems contain all of their particles within themselves and handle all of the particle's dynamics within themselves. This results in a dramatic savings of processor and memory usage, because any class that wants to be visible must be an actor, and having thousands of actors on-screen would use piles of resources. The native particle systems are best thought of internally as a single actor which dynamically changes its appearance. Dynamic Textures, aka "procedural textures," were a two dimensional particle system, though they were considerably less flexible than the new particle systems in UT2003.
Emitter is the particle system produced by Epic Games. It is a powerful but complex system, and is capable of reproducing the same effects as xEmitters and xWeatherEffects with only a few exceptions. They are also capable of making compound effects, ie particles that move relative to other particles, etc. However, Emitters have piles upon piles of settings and can be difficult to learn to use properly. There is also a small number of effects that they cannot do without some custom scripting.
See ParticleEmitter Cookbook for some settings.
xEmitter is the main particle system made by Digital Extremes. They cannot make compound effects, but are much easier to use than Emitters and the beam effects produced by xEmitters can move, allowing you to make beam-based trails, for instance. However, it is worth noting that the xEmitter system is not part of the Unreal Engine per se so if you are planning to get an Unreal Engine license and produce a commercial title you will not be able to use xEmitters.
xWeatherEffect is essentially a powered down and simplified xEmitter. Because it is simpler it runs faster than an xEmitter and is much, much easier to set up to do what you want. It will also follow your player around so you do not need to cover the map with particle emitters in order to have coverage everywhere. You can set up certain volumes to be excluded so it doesn't snow inside your buildings as well.
Particle systems allow you to generate and display a large number of meshes or sprites with relative ease. However, as Spiderman taught us, "with great power, comes great responsibility!" Particles drawn using a particle system use far less resources than if they were all actors, but they are not "free." This is important to remember as how good a particle effect looks is generally related to the number of particles. For instance, a dust cloud with twice as many particles half the size will have more apparent detail. You must avoid using tons of particles, of course, to prevent large drops in framerate.
However, it is also important to keep in mind that particles, especially sprites, should never be too large, unless they are in the skybox. The reason for this is simple: every time a sprite intersects a mesh, it must be "clipped" so it isn't drawn overlapping the mesh on-screen. A big sprite can touch a lot of triangles, and this can make the game run REALLY slow. If a particle system you are using is slowing down the framerate, try adjusting it both ways (more/smaller particles, and less/larger particles) to improve performance.