Your assumption is correct. Hard references (basically any blue node or variable, or purple class node or variable) mean the object is loaded in memory automatically, and this is also true for anything that references the object that contains the reference.
Blueprint1 has an array of Static Mesh references containing Mesh1, Mesh2, Mesh3.
If Blueprint1 is in the world, Mesh1/2/3 are all loaded with it.
If Blueprint2 references Blueprint1 (say Blueprint2 has a Spawn Actor node with Blueprint1 as the class), and Blueprint2 is in the world, Blueprint1 and Mesh1/2/3 will be loaded along with Blueprint2.
Asset IDs and Class IDs exist for that reason. That’s why you have 4 choices when you create a variable of a certain type (Object Reference, Class Reference, and then an “unloaded” version of each). They hold a reference to the asset as a string (in the back end), and must be loaded before they can be accessed.
When you Load an asset ID, what comes out will be of type Object, so you’ll need to cast it to Static Mesh in order to then plug it into whatever you’re using the mesh for.