think of it like this:
Bob sees a person in the distance. He doesn’t know who it is. He writes a note on a paper airplane that says, “if you can read english, tell me your name”
he throws the plane and waits
the plane comes back and it says, “my name is jill.”
he does this again with another person, this time he gets no response. Apparently that person did not speak english.
So make an interface called “english speakers interface” and give it a function called “Whats your name?” This function should return a string.
Put two blueprint actors in the level. When you press key 1, do a “get actors with interface” and on the actor that gets returned, send the message “whats your name”.
In the blueprint actors who will listen for this message, implement the interface and into the return, type whatever their name should be.
If you get that working, that is everything you need to know to make interfaces work. Youtube tutorials make it seem like rocket science for some reason.
Also, don’t use interfaces just because you think it is better. It might have no use for you and just complicated workflow. Use interface when you need a one to many communication style where each of the many might handle the communication in a unique way. If it is one to many but the response is always the same, use actor components instead.
The issue with casting is that it has to load the class that is being casted to. It is doubtful as a beginner that you are achieving total decoupling anyway, so the effort with interfaces is probably wasted to that effect. And it is also doubtful that you’re going to hit a problem because of hard referencing, unless you were making a game that is way outside your scope, in which case you have much bigger problems anyway.
That’s not to say don’t study more and practice, just don’t waste time getting carried away trying to optimize things for problems you haven’t hit.