Справочник
Объектный файл
Результат компиляции одного .cpp: файл .obj с машинными командами. Это ещё не программа: в файле .obj есть ссылки на функции, код которых лежит в других файлах.
Компилятор переводит каждый .cpp отдельно и для каждого пишет свой .obj:
из main.cpp получается main.obj. Внутри — машинные команды твоих функций
и список того, чего не хватает: «здесь используется std::cout, где его код — не знаю».
Запустить .obj нельзя. Сначала
Зачем такой промежуточный шаг: в движке будут сотни .cpp. Поменял один — перекомпилируется только этот файл, а остальные .obj уже готовы. Линковка быстрая, и программа пересобирается за секунды, а не за минуты.