Playing with the runtime system lets you do some very powerful things. Every aspect of the Objective-C object model is exposed to developers, so any of the apparent "magic" in Foundation and AppKit — including things like KVC, KVO, and bindings — can be implemented by anyone. This is a large part of the attraction of Objective-C (and Smalltalk). All of the really interesting features are implemented in the library, not the language, so they can easily be modified if desired.
Code that touches the runtime often needs more debugging than other code, due to its low-level nature. Apple has gone to a lot of effort with NSObject to ensure that the most-commonly needed parts of the runtime functionality are available from Objective-C, so look there before diving in to the low-level APIs. When used correctly, however, code that directly manipulates the runtime can enable very simple extensions to the language.