A cluster is a set of computers (usually called nodes) that act together to create a Single System Image. The image can be from a lot of different viewpoints - service availability (the service running on the cluster is available even if a node is down), performance (you can submit a job to the cluster, and it can run as well on any node), administration (the administrator don't have to care about the difference between indivdual nodes), or just about any other logical point you can view a computing system from.

The most common reason for creating a cluster instead of getting a really fast machine is High Availability. Due to the increased cost of top-of-the-line computers compared to the low end, you can usually get the same performance from a cluster of smaller machines for about the same cost - and get High Availability almost for free.