@Anton Bikineev: I asked Billy your question (he works right next to me), and this was his response:
We get the Windows thread pool to do our dirty work. That'd be QueueUserWorkItem on Windows XP, or CreateThreadpoolWork/SubmitThreadpoolWork on Vista+.
The version shipping with VS2015 and VS "15" is somewhat nonconforming in that it doesn't implement launch::async correctly -- it doesn't spawn a real thread and always uses the thread pool. This has been fixed in the next major version of the libraries.
(I didn't implement and have really only done minor bugfixes to the version shipping in VS2015/VS "15" but the version in the next major libraries version I rewrote from scratch)