i’m gonna try to explain casting a bit
imagine you had a class hierarchy where you have a base class called Vehicle, and two derived classes called Car and Airplane. When you get a reference to a Vehicle, the program doesn’t know if it’s a Car or an Airplane (or just a Vehicle). But if you as the programmer know that the referenced Vehicle is actually an Airplane, you can use Cast To Airplane and get a reference of type Airplane (if you were right and it really was an Airplane).
Now if the Airplane class has a function like Fly or whatever, you can call it on the Airplane reference, but couldn’t have called it on the Vehicle reference. Because your program didn’t know it was actually an Airplane before you casted it.
You were trying to cast a reference to one object to a totally different object, which is not possible.
"I don’t seem to be able to feed GetObjectName into a set variable node either. "
What GetObjectName returns is a string. If you want to feed that into a variable, the variable also has to be of type String.