When creating hair, modeling the hair out of geometry is the first notion that you will usually have. Some types of hair work well with this method. Many of the early 3D characters had hair that was one solid mass, much like a wax wig. This type of hair might work well from a design standpoint if your characters are highly stylized.
For more realistic-looking hair, geometry may become problematic. If you want to create rather coarse hair, or if the character's hair is rather thin, you can simply use a tool that automatically distributes copies of an object (a hair) across a surface (a skull) The distribution can be random or more controlled. Still, getting the required number of hairs with this method can tax your system's resources, and animating this many hairs could be a problem.
One way to get around this problem is to use larger "strands" so that the hair is only a few pieces of geometry, and then combine it with clever use of texture maps to get the impression of many individual hairs. These big "locks" of hair do not need to be cylindrical; they can be flat planes or more complex geometry with jagged edges. The texture maps are usually scanned locks of hair with a bit of a bump or displacement map to get the texture of the individual hairs. You should also worry a lot about the specularity maps, which produce the highlights. Specular highlights for hair change color based on angle. Getting the highlights right requires a great deal of trial and errorand perhaps a few custom shaders.