"Z-fighting" is a result of a limited depth buffer.
When rendering an image inside a 3d software you 'raytrace' it. This means that a large number of rays are shot out from the camera (through each pixel of the final image). These rays simulate real world light rays and can thus fairly accuratly simulate shadow, reflection, lights ect... In this environment z-fighting dosn't really happen (unless the resolution of the temp variables are really crappy)
In game graphics this is fundamentally different. Here everything is based on vertex lighting.
It also operates on a series of different 'buffers'.
One of these is called the 'depth buffer'. In this series of calculations it figures out the distance to each object(surface) in the scene. The surfaces with the smallest depth value is chosen to be displayed in the particular pixel. This is a good and fast way to 'render' geometry and this is true for all game engines (except a few prototype examples).
The problem with this is that it only has a resolution of 256 values. 0 being the closest thing and 255 being the furthest away.
Now if you are in a small environment and the furthest object is 10m away, then these 10m are divided into 256 equal parts. So every ~3,9cm there is a new 'depth level', but if your view is 700m then each level is ~2,7m apart. So surfaces on the same line of sight closer to eachother than 2,7m will 'fight' over the pixels there. That is the 'fight' part of 'z-fighting'... The "Z" comes from the depth. Usually the internal axis of the cameras has the z-axis point out into the screen (some has the y-axis).
These 0-256 can be represented by a greyscale image (really helpful for debugging!) here is an example. 0 is black (near) to 255 is white (far):
Example of Z-fighting:
For the artist:
Beware of having surfaces too close to eachother. Like in DankE's model above the doors are seperate objects layed on top of the main body. So the surfaces of the door and the big plane behind it are pretty close to eachother and since it is such a large area it will be very noticable.
The viewports inside your 3d software (like 3ds max) function the exact same way as game engines handle this, and if you zoom out you will start to see stuff flickering. This is why I try to make people take screenshots of their models rather than 'rendering' them.
You will also notice this in PR. When you are in a chopper or aircraft you will see stuff flickering on the ground.
Once I get the time I will do a proper article on a whole range of these subjects with artists in mind rather than going nuts with the technical details...