Saving all objects state in a level

Interface is more fancy way of get all actors from classes, you can add interface to all actors classes you want save.
How many different classes in fps game you can have that you want to save state? I think around 10 is quite accurate estimation.
So with interface you do it all in one loop. With Actor from class you need 10 loops, 10 arrays.

And use Structs for save/load else you end with 50-60 arrays for 10 different classes.

For open level problem:
Do not place actors statically from editor in level. Instead make blueprint class that is simple arrow, mesh or icon with some enum that tells what type of spawn point it is.
This way when level loads you will have only spawn points, not actual monster/pickups. Then either you populate them from save data or from some array that holds default state.