Outside the class package, the reference is generally treated as an opaque value that may be accessed only through the class's methods. A constructor may re-bless a referenced object currently belonging to another class, but then the new class is responsible for all cleanup later. The previous blessing is forgotten, as an object may belong to only one class at a time. If you find yourself having to do this, the parent class is probably misbehaving, though. References are not.
Objects know which package they belong to.
References do not. You use a package as a class by putting method definitions into the class. This is how Perl implements inheritance. If a missing method is found in one of the base classes, it is cached in the current class for efficiency. If none of that works, Perl finally gives up and complains.