When I do a cvs status of my project I get different revision numbers for different files. What is happening here? Should not all the files have the same revision number?
CVS was originally a set of scripts over the file-oriented RCS, and it never escaped its history. A CVS repository is a collection of RCS files arranged in the directory structure you want when it's checked out, plus some lock directories. Remember that and you'll understand (and maybe be able to anticipate) a lot of CVS idiosyncracies. (Later VCS have had the idea of directories built in, as well as things like file continuity across renames.)
The CVS idea of a global state is a tag, which has to be applied manually. This is done by tagging each and every RCS file. It's also possible to get a copy of the repository at a given time, but this is not necessarily consistent, as large commits are not necessarily atomic.
So, no, the CVS revision of a file is the RCS revision in the repository, and has nothing to do with any other revision number. Don't sweat the revision numbers.
The CVS revision number reflects how many times that file has been changed. If you want something consistent across a project you'll need to use cvs tag after committing to give everything a consistent label.
no. cvs does not have a single revision number like more modern version control systems. Each file has its own separate version. If there is any way you can move to another version control system like subversion, mercurial, git...do it.
CVS doesn't have global revision numbers, they are per-file. (In fact, CVS doesn't even have atomic commits)