The bless takes that reference and tells the object it references that it's now a Critter, and returns the reference. 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. References are not.
Objects know which package they belong to.
References do not. The bless function uses the reference to find the object. 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.