That's really up to you. A lot of the WowAce add-ons, having been on the SVN for all their lives, use a revision number and sometimes a major version number. The major version number in this case usually only changes for complete rewrites of the add-on/library. The revision number comes straight from the SVN and increments every time any change is committed, so it's an easy way to keep track.
Most add-ons that aren't kept in source control use their own versioning system. This sometimes takes the form of Major.Minor (e.g. v1.1), but each author does his/her own thing.
There are multiple ways to define a version number for software. In most cases it's up to the author though. If you aren't bored reading, this article contains some good examples and information : http://en.wikipedia.org/wiki/Software_versioning
I tend to make my version numbers by using the current TOC #Interface number. Something like v20400-1, v20400-2, v30000-1, etc. I find it nice since it tells ppl that the addon is made for a particular version but it does confuse ppl when you don't release after every TOC change so it's certainly not perfect.
I prefer systems where the final number indicates bugfix or repack (to include updated libraries or such), and an increase in only the final number means no features have been added, removed, or changed.
Where I work we've adopted an Ubuntu type versioning system. That is <Year>.<Month>.<Day>.<Revision> So if we were to release our program today it would be version 8.10.12.<Revision> whatever revision were on.
This works quite well for us as at a glance when someone submits a bug report they give a version 1.x.x.x we know they are using a really old version of the software. This system isn't very common and I know a lot of people don't like it due to the larger numbers. I prefer it now that we've been using it for awhile though.
I like the " Major.Minor.bugfix " method. Bump the major when you want ALL your users to update. Bump the minor when there are feature changes, but in effect breaks nothing requiring no one to update if they don't want to. bump the bugfix when taging to indicate that it was a less important change.