Source files are your .cpp (or .c or .cc, etc.) files that contain your source code. You create these. An object file is generated by the compiler before it gets linked and turned into the .exe or .dll. I think an object file is generally created for each source file, but I could be wrong.
Source files contain your source code as you write it.
An object file contains the compiled machine code for each of the functions and variables (and data). However, all these functions need to be linked together to can run. that puts all this machine code into a single file containing it all, a so-called executable (.exe or .dll under windows).
An object file is just a file containing the machine code of some source code. So you can create an object file containing the machine code for the source code contained in as many files as you need.