I can anwser few of those quastions
What exactly triggers assets to be loaded?
When it needed, when you load asset that requires other assets those assets are also loaded when object of that asset is created or they are loaded manually . UE4 need them inside memory or else code will hit null pointers which cause crashes.
When making a streaming level invisible BUT loaded, are resources linked to this level wholly kept in memory?
Yes, visibility options is primarily for visual aspects without need to reload everything to make something visible again. Only thing you saving here is GPU work load. You need to unload level in order for it to be removed from memory.
Is there any documentation/tutorial on memory management in UE4?
I don’t think so, knowledge about is spread around everywhere, search anything about asset management and loading because it usually involved around that, don’t be scared of looking at C++ content too, also see below you might find something in links i give oyu.
Being more specific here, if I look at a uasset through the reference viewer, does everything referenced by and referencing to this particular object is automatically loaded, when that object is loaded?
Generly yes, UE4 memory management can’t specific what code gonna do with asset, so it load them all so there no null pointers. UE4 on C++ side can’t detect if code access the pointer and magically load the asset, object pointers there are raw memory addresses. In perspective on next question, keep in mind you reference initial asset by setting them on in default variables and component configuration, object on initiation needs them on when it is created, which in most cases are assets as practically only assets can be referenced on default. Also note that we talking here about objects (blue links), having class pointers (puprle links) that link to other blueprints should not load the asset until object from that class is made, so we talking here only about active objects which in most cases are assets.
If the last question is true, how can I limit the references to a certain much needed class all around such as the Game Instance object?
UE4 unload the object that no one reference them anymore (but after a while or inactivity), so set all variables with asset that are not used anymore to None or null pointer (nullptr) in C++. In case of actors keep in mind they will stay in memory as long as they are inside the world and world still exists, so destroy all not needed actors too or unload level with them.
Would calling a function on the Game Instance through an interface instead of using a reference to the instance help limit the references to the Game Instance?
No, Interface is just a type allowing to reference unrelated classes with common function tied to interface, it is not some special communication code, on C++ side it still same memory pointer pointing to same object, it just coding tool.
What you might look in to are soft object pointers (preciously Asset pointers) which gives more control over asset loading it:
They are also in blueprints under same name.