Every time you run the assembler it produces an output file, which is your assembly language program translated into numbers. This file is the object file. Its default name is a.out. You can give it another name by using the -o option. Conventionally, object file names end with .o. The default name is used for historical reasons: older assemblers were capable of assembling self-contained programs directly into a runnable program. (For some formats, this isn't currently possible, but it can be done for the a.out format.)
The object file is meant for input to the linker. It contains assembled program code, information to help the linker integrate the assembled program into a runnable file, and (optionally) symbolic information for the debugger.