How does 3D printing over USB work? In Cura, if you plug your favourite 3D Printer you will most likely get an option to Print via USB. If you have never heard of what I'm talking about, please see this video: 
                
            
I wanted to know some information on how this works:

Is the communication through UART or through Serial?
How can I establish a connection to the 3D Printer?
Is there a list of commands I am able to send?
What is the default baudrate for 3D printers?
How is the G-Code of the print sent to the 3D Printer?
This is just a stub answer. I will try to expand on it later.
The 8-bit microcontrollers used on many 3D printers do not have a USB interface, and so a USB to serial interface chip is used to allow a computer to communicate with the serial port (UART) on the microcontroller. In order for the computer to communicate with the printer, a device driver is needed to allow the operating system to communicate with the interface chip.
The appropriate device drivers should be supplied with your printer, and you should install these drivers before you try to do anything else. The drivers will make the printer look as if it has a serial interface, and the highest speed that most 8-bit microcontrollers can manage is 112800bps.
If the software that you are using has a terminal interface, you can send any G-code commands to the printer. For a list of G-code commands, see here. Note that this list includes commands for CNC machines as well as 3D printers.
For normal printing, G-code commands are sent to the printer using a print manager, such as Repetier-Host. Some slicers may have built-in print managers.