Version control systems use locks to prevent the same files from being modified by two developers simultaneously. If a lock is used while revising a file, no one can modify the file until it is unlocked. Locking and unlocking can be controlled by checking in or checking out versions.
basically, as edit_g said, it's a system of control over files on a network. A controlled method for accessing files will prevent someone from 'updating' an old version of a file. Just like in windows when you can only open a remote file as 'read only' if someone else already has the file open.
In a broader sense though a software project may have many parts, separate but dependent upon one another, and the update semantics of a complex system can become... well, quite complex. A proper version control system would be aware of the aspects of the specific project, and take care that all of the update semantics, for each separate section, and for how these sections come together, are followed appropriately.
The manual for CVS at [cvshome.org...] has this to say about what CVS is not: Itīs not everything to everybody. There certainly is a high truth value to that statement. Unfortunately is does not really further the readers understanding of what CVS is or isnīt.
Some features that I came up with:
keep different versions of source code
allows to create branches of projects
allow several users to work on the same file concurrently and merge their versions