A version control system allows a developer or development team access to essentially I time machine. If the source code, settings, etc., that were used to build a program or system are under version control then the developers can step back in time to recover lost functionality, trace how errors were introduced, support users of older versions of the software who, for one reason or another are not yet ready or able to upgrade to the latest version.
The oldest instances of version control were taking a snapshot of the source code at a specific point in time and putting them in a safe place with a label on, in some cases these were literally draws full of punch cards.
Currently there are numerous version control programs which simplify this task which fall into a number of distinct categories:
All version control systems should let you:
Most version control systems also include:
Many version control tools include, or provide mechanisms for, additional features such as:
To conclude this section most professional or serious code developers working on anything but the most trivial code fall in love with version control once they have got into the habit of using it. Being able to say, even years later, what exactly changed between version 1.3.1 and version 1.3.1.1 can be a great help. People such as auditors love good version control systems & practices as it gives trace-ability when integrated with an issue tracking system - being able to say "this issue was fixed by these changes produced by this person" or "this change was made on this date to address this issue" makes them a lot happier. Having, possibly multiple, off machine &/or off site backups of all of your work means that if your machine breaks or your office is destroyed you can resume work in short order. If you are working on open source projects the VCS is likely to be your main collaboration & review tool, trying to work without one will get you not taken seriously by your peers, (github, bitbucket, etc. are built around version control tools). The users of your final program will probably not notice that you are using a version control tool but they will love it when you are able to say "that problem was fixed in version X.Y.Z if you upgrade to that you should see the problem go away".