A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James
For someone starting out with version control I would recommend using RCS on some small projects to get the basics down. Then using Subversion or one of the other more complex and project oriented version control systems will be a lot easier.
This is going to be another piece you will think is unnecessary in the beginning. Years ago, I saw version control described as a time machine for your development.
A version control system allows you to go back to earlier versions of your code or compare your two different version of code. This is most useful while things are changing.
For example, imagine that you've got a mostly stable version of your code in place. Now imagine you have a great idea that will only take a few minutes to code up.... 4 hours later, nothing is working and you are wishing you could go back to where you were 4 hours ago. Version control to the rescue.
You could do the same thing by zipping up your entire site any time you feel it is worth keeping.
Version control can also help with seeing what changes you have made (to help you find where you went wrong). Say you want to compare what you did 2 hours ago with what you have now.
The point of enlightenment for me was when I realized that I could use version control proactively. Make sure everything is under version control. Try something experimental that might break everything. If it works, keep it. If it doesn't, toss it. No real loss.
Of course, there are better and more advanced ways to make use of version control, but these would be helpful right away.
A version control system is a stand-alone, fundamental component of a configuration management system that is responsible for the management of individual versions of controlled files/items, providing the ability to manage versions of controlled item versions, typically involving the...
Management i.e. creation, update & conditional deletion of item versions
Support of version branches
Support for the merging of item versions
Management i.e. creation, update & conditional deletion of controlled item version labels
Note that the merging of item versions is specific to software configuration control/management systems, the facility is neither required, nor indeed present, in hardware control/management systems.
Note also that the management of item version labels provides the basis for baseline management - in which aggregates of items (& their versions) are managed as enitities in their own right.
I would take issue with CountZero in as much as ... Allows more than one programmer work on the same project ... is not necessarily provided by a version control system, it is known (in the trade) as co-ordination of concurrent development and is a fundamental requirement of any configuration management system.
A user level that continues to overstate my experience :-))