I have been exploring the same thing. What I've deduced is that if you don't have a programming background or database background you must climb along way uphill before you'll be able to do anything creative with building your own modules or tweaking or troubleshooting the core code. Through trial and error (translated lots of hours) I've been able to learn enough about VS 2005 to load the source and starter kit versions of the software. I've also been able to follow some excellent tutorials from Michael Washington
http://www.dotnetnuke.com/Community/Forums/tabid/795/forumid/111/threadid/74227/scope/posts/Default.aspx
to create modules both as wsp's and wap's. But copying code and following directions from tutorials will only get you modules that are waiting for you to do something with them. This is where you discover that you need a good understanding of VB.Net. and database concepts such as stored procedures, queries, etc.
Also, loading the source code of modules is a great way to learn how they work and to borrow concepts that you can integrate into your own modules.
So any training, either through courses or books, related to vb.net, or c# if you prefer, along with strengthening your understanding of database concepts, will help you gain a better understanding of dnn.
Hope this helps,
Paul