A virtual dependency is one that is fulfilled by more than one alternative provider.
Example: We have lots of kernels in OE for different models. All our kernels provide "virtual/kernel". Now external module packages don't need to know _what_ kernel they're building against, however they need that _a_ kernel has been built - hence they rely on 'virtual/kernel'.
This is like saying "I don't care about which kind of ice-cream, I just want ice-cream"