OpenVZ, Docker and LXC and other similar so called "container" virtualization technologies are pure software virtualization. Hence the reason why there is minimal to absolutely no overhead. However this kind of virtualization is bad after all as it emulates a very limited system without any kind of hardware passthrough and features. OpenVZ and LXC are a bit better than Docker as you can still have your own container that runs your own OS with full root permission, its "kinda" own filesystem and etc.
Nested virtualization is a whole different thing. But basically if done right you can run any virtualization inside a already hardware virtualized machine. E.g. OpenVZ in KVM, Docker in KVM, KVM in KVM and so on. The same will not really work with software virtualization (or if it works it will only work with certain emulation and the usability and performance will be rather bad).
Overhead is also its own topic that needs to be considered.
My2Cents. I'm in for hardware virtualization if you need a full machine. If you want to have something quick and only for certain applications Docker might work or if you still need kind of your own full OS then OpenVZ/LXC will do better.