In package.xml 1.0, the version was simply the version. package.xml 2.0 splits the concept of versioning into two components, release and api.
The release version is the same familiar versioning concept from package.xml 1.0. This version is validated very carefully by the packager.
The API version is informational only - the installer does not use it. It can be used for a package-time replacement by the installer. This can be very useful when implementing a reflective method such as getApiVersion(). In addition, the API version is very loosely validated, and only requires a version_compare()-compatible version number.