Should I avoid casting?

I find myself casting referenced variables alot and I’m wondering if it would be better resource wise to just make the variable of the casted blueprint type, or is there no difference?

The main reason to avoid casting would be to reduce blueprint dependencies.
BUT, if you are casting to native class(either from stock UE4 or you compiled your own in C++), you don’t have this limitation.

I’d say some of the UE4 nodes/variable might be “cached”, so as long as they don’t change it shouldn’t cause a lot of overhead.(<==totally speculative statement)
I also save most of reference to other blueprint usually with base classes(Actor/Pawn/Controller) and then use interface check and call to run things I needed.
I have yet to run into serious performance issue with this approach.(I also rarely rely on those per frame events, like EventTick and EventDrawHud, to drive game logics.)

my 2 cents.