Мало ли кому-то понадобится решение подобной проблемы.
Суть в том, что сперва CArchive при записи пишет размер коллекции, а после саму коллекцию. А при чтении из файла мы с помощью CArchive считываем сперва размер коллекции, который в файле, а после каждый объект.
Так вот, ошибка была довольно простая - записывали мы размер как vectorObject.size() - который возвращает объект size_t размером 8 байт, а считывали размер в INT, размер которого 4 байта, тем самым продолжая считывание уже объектов из файла - порождались NULL объекты.
Для решения достаточно либо записывать размер как (INT) vectorObject.size() и считывать размер так же в INT.
Либо записывать vectorObject.size() -> size_t значение, ну и считывать соответственно тоже:
size_t count;
ar >> count;