I wrote this blog post about a year and a half ago when Puppet 2.7.17 was freshly released, and I was doing operations at Puppet Labs and was trying to do some gnarly stuff with Puppet internals. I have a pretty bad memory, and blogging about things I read was the only way to keep everything in my head.
Since I wrote this post, a number of things have changed. For one we've prioritized clear documentation and we work hard to make sure that the code itself is clear and understandable. Since I've been the one whining about poor inline documentation, I've taken a swing at improving things myself (https://github.com/puppetlabs/puppet/commit/447d24403f461743...), because if I'm going to whine I better put up and make a change myself. In addition Nan Liu/Dan Bode released the Types and Providers book (http://goo.gl/DEJoAd) which does a great job of explaining that layer of Puppet; if you're interested in extending that layer of Puppet I would highly recommend it.
If anyone has questions I would be very happy to answer, and always if anyone is interested on developing on Puppet I and the rest of the platform team would be very happy to help out. We have #puppet-dev on irc.freenode.net; you can ping me directly (nick is finch) and the rest of the devs are also very helpful!