All hypervisor programs are pretty amazing, at least in my opinion. Just take a moment and think about how difficult it would be to write a program that simulates a single computer. You’d have to build the display, and take all the hardware calls and reroute them from the VM OS to the host OS. You’d have to handle every signal from the mouse or keyboard coming in from the host OS and get it to the correct device driver in the VM OS, and take things like disk access requests or network traffic from the VM OS and get the host OS to handle it correctly. And if it isn’t amazing enough that the hypervisor allows you to simulate a complete computer, most also allow you to set up multiple VMs and network them together. And … they not only let you run VMs with a single OS, you can choose almost any OS. And not just one version of an OS, but different versions of each OS!
The point I’m trying to make here is that any hypervisor program is going to be a complex beast, and there will be a lot to learn. I’ve provided lessons and videos on the basics of setting up a Linux VM, and configuring some of the networking, but like everything in computer science, there’s always a lot, lot more to learn about VMs and Virtual Box. In case you want to learn more than the basics here are a couple of links to get you started: