VirtualBox lets you boot and run other operating systems inside a program on your Mac.
If there are a few Windows applications you can't live without, you can have them on your Mac, by running them under a Virtual Machine Monitor (VMM). I use this feature to check that web pages look right in Microsoft Internet Explorer as well as Firefox, and to run applications that configure an uninterruptable power supply and a print server.
There are four VMMs that run under MacOS: Parallels, VMWare Fusion, VirtualBox, and Microsoft Virtual PC. I have tried the first three. All can be made to work. It is possible to encounter problems with any of them. I do not need many features from a VMM, and VirtualBox is free, and does not include ads, so that's the one I am using now. (I have good friends who used to work at VMWare.)
A Virtual Machine Monitor, or hypervisor, runs as a program on a host operating system, OS X in this case. It provides an execution environment that can run a guest operating system, say Windows, so that the guest system thinks it has complete control of its own computer... but whenever the guest OS tries to do privileged operations, or access I/O devices, the VMM is invoked, and simulates the requested operation, and lets the guest program run again. (This kind of interposition goes way back: I first used it on CTSS in 1963, and I managed a CP/CMS system in 1969-73.)
VMMs can become very complex if they are required to provide high performance or emulate complicated sharing of resources. They can simulate whole networks, or test new operating system versions, or make it appear that programs for another OS are regular Mac applications.
I use virtual machines on my Mac in a very straightforward way, to run a few Windows-only programs without dedicating a computer to Windows. I'm not very concerned with performance, or tricky interactions. I don't try to run computer games that have demanding video, network, and performance requirements. The thing I'm most concerned with is minimizing trouble, and having the VMM work when wanted, and not be broken by OS updates.
In order to do these operations, I need to be able to connect the VM to the Internet, and to move files between the Mac file system and the VM's simulated file system.
I downloaded VirtualBox from https://www.virtualbox.org/ and installed it. I then booted it up and created a VM for Windows XP, and installed and activated XP from a legal install disc, taking all default options, as described below. I did this twice: in one VM, I did not upgrade MSIE from version 6. So I have one Windows VM that runs MSIE 8, and one that runs MSIE 6, for checking web pages. On the MSIE 8 version, I loaded in the few other Windows-only programs I need, and all the Microsoft fixes available.
I installed the "Guest Additons" into each copy of Windows XP. This package supports better mouse integration, resizing of the VM window, shared folders between host and guest, and shared clipboard between host and guest.
It works fine. There is no ability (with VirtualBox 4.1) to drag and drop files between the Mac Finder and the virtual machine; moving files into or out of Windows requires use of the shared folder.
I do minimal tailoring of the Windows installation to eliminate annoyances. I turn off the startup music, show full paths and suffixes in folders, and disable the trash warning. I install Firefox, Emacs, and Stuffit Expander (because native Windows has trouble expanding ZIP files).
Took several hours, mostly due to repeated Windows updates.
To shut down, use theButton in XP and choose .
Suppose you want to install OS X in a virtual machine. With this arrangement, you could use a virtual machine running Snow Leopard, with its Rosetta support for PowerPC code, on an OS X Mountain Lion host for everyday use. Apple has a rule against running OS X Snow Leopard Client in a VM: the legal way to do this is to use Snow Leopard Server. You can buy a copy of Snow Leopard Server from Apple for $20.
When I tried installing Snow Leopard Server on VirtualBox 4.2.12, I had trouble. I encountered hangs and kernel panics. I uninstalled VirtualBox and installed an older version, 4.1.26. Snow Leopard Server installed just fine on that version.
I have not tried printing from inside Windows; see http://www.poolofthought.com/index.php/2011/09/25/printing-from-within-a-virtualbox-client/. I think I would have to add the Windows option Print Services for Unix (needs the software CD), then add my local network printer as an LPD port, and then install the driver for my printer.