For more on CLOS, "Object-Oriented Programming in Common Lisp" is a fun little book. It has some reasonably practical examples and touches on just enough of the system's low-level details. It doesn't have much to say on the Metaobject Protocol, though, and I think for that "The Art of the Metaobject Protocol" is pretty much the standard text.
And that the ideas of 'self-extensibilty' & intersession haven't been further developed. IIUC one can change a class metaclass in Pharo/Smalltalk but not in CLOS. Rhodes idea of extensible specializers seems very useful
Seconded, both examples. I get strong impression, working with Lua, that Roberto Ierusalimschy is a devotee of the MOP. Lua in a sense has a MOP but no built-in object system.
IIUC, the primary method of the standard-method-combination look's a lot like Haskell Typeclasses.
The standard-method-combination has a middleware-like dispatch as shown in here [0]. CL comes with other method-combinations like +, append and you can also define new method combinations.
CLOS is best used primarily by defining a protocol with generic functions, then using methods and (optionally) classes to implement the protocol.
http://xach.com/lisp/jrm-clos-guide.html has a copy of Joe Marshall's "Warp Speed" CLOS guide.