The beautiful thing about FArchive is that it’s a binary serializer. It doesn’t know or care about the type of your underlying data. It’s simply a steam of bytes: TArray< uint8 > which is both serialized out and back in when ::Serialize() is called on an object.
So, when you serialize back in your save game, it will actually do a binary overlay of the loaded data back on to the object you are serializing.
I imagine that you call Serialize() on all applicable actors during a Save Game event. That will package the actors up into nicely serialized objects, but where do they go? In a big array on the SaveGame object which is then written to a slot? <<<
Yeah, you generally will serialize everything into some save class you create which has an array of data records in it, then you call SaveGameToSlot either in code or from a blueprint.
To load the game back up, you call LoadGameFromSlot() and then using that loaded binary data you call Serialize again on your objects that have been created to overlay the loaded data back on.
To get a better understanding of how this works, have a look at Rama’s serialization tutorial on the wiki.
https://wiki.unrealengine.com/Save_System,_Read_%26_Write_Any_Data_to_Compressed_Binary_Files
Be patient as you work to understand all this. It takes some experimentation on your own part by setting up some code / blueprint tests and see how it works, but it will eventually click.