a .o file is a so called object file.
This file contains compiled code. FPC compiles every unit into a .o (and a .ppu, containing info needed for fpc). After compilation, all .o files get linked together through a linker (ld or the internal linker) into a executable.