Currently the versioning scheme for cookbooks is "<major>.<minor>.<patch>".
Even though this is good enough for most cases, it's lacking support for prerelease identifiers (they are part of SemVer 1.0.0).
Besides publishing alpha, beta, rc versions etc., which allows you to communicate the stability of a cookbook release, it has also a big relevance for forked community cookbook versions.
For example: consider a fork of cookbook "foo" with a bugfix that is not merged to the upstream cookbook yet. As of today, you can not differentiate between your fork's version and the original upstream version. If you keep the current version, e.g. "1.1.0", you can no longer uniquely identify your fork in metadata.rb. If you increase the patch level to "1.1.1", you are introducing a conflict with the next patch level version of the upstream cookbook being released. If we had prerelease version numbers supported, you could just use "1.1.0-mypatch" in metadata.rb, which would let you uniquely identify your fork in metadata.rb.
There are also good use cases for supporting build numbers which are part of SemVer 2.0.0-rc1:
Is this an exotic use case I'm having? Is this a topic at Opscode?