The adaptTo() method found in many sling objects allows to "transform" objects. Sling could have decided to add a resolver.getSession() method, but that wouldn't have been very flexible. The nice thing about adaptTo is that is it dynamic. you can create adapters to transform between different types (they are OSGi services). Sling and CQ5 also include bunch of adapters by default. The sling Wiki has some docs about adapters.
About how to start with Sling and CQ5, the sling site is a good place to start