Is there any way I can create a reference to an actor in normal blueprints, as it only allows me to do it in the level blueprint?

When you select an actor, you can create a reference for it in the level blueprint, is there a reason why you can’t do this in all blueprints?

No, and that because your blueprint potentially can run on different level so there is no guaranty that object will exist, there level blueprint is stored toghther with level so it can refrence to objects on the levels more direclly. There many ways how to get reference, classes provide APIs which let you access specific object, for example from PlayerControler you can get pawn it is possessing, you cast it to your class and there you go. When you spawn object you should keep it’s refrence somewhere if you want to communicate with it later on, as last resort you can always use “Get All Actors of class”