I always use the SD card after having multiple crashed prints caused by Windows doing something to USB in the background. It may depend on your printer, but if ANYTHING tickles the USB for any reason, my printer (MakerGear M2E) throws a fit.
I have a USB connection to control the printer for things like filament changes, but I had to install a hardware switch to disconnect the USB completely when printing. Even when I'm printing off an SD card, any USB activity can cause the printer to freeze. I don't know how much of this is the fault of the printer being overly fussy about USB activity, and how much of it is Windows mucking about. As long as I remember to flip the switch after changing filaments, I haven't had an issue.
To answer your other question, the SD card contains the gcode file for the print job. That has ALL the info required to run the job from start to finish.