I could not find any doc on what all or anything that virtual devices can be used for.
Presumably they could be used for testing rules but what else can they be used for?
I read where someone had a virtual motion sensor...is something like that just for testing rules associated with a motion sensor before moving the rule to the real motion sensor?
Aaiyar has a pretty good list. I would add you can change one thing to another. You could make a contact sensor appear as a motion sensor, or a switch, or a button... There are weird but fairly common use cases for this. Alexa is a good example here, she doesn't understand what some devices are, so to make them usable, you have to pretend they are something different.
You can't directly link the two devices (virtual and non-virtual), in other words there is nothing in the virtual driver where you can point from one device to another. But with rule machine, or simple automation rule, or an app, you can transform them.