Hello,
1) The DNN source code is publicly available via the Downloads button at the top of every page. Pick a source distribution, and you're into the code.
2) Sure, it’s easy to modify. Is it easy to modify to accomplish a specific task? Well, that depends on the task.
3) Ignoring the non-DNN issues related to the example you provided, what you describe would require some minimal effort, such as sub-classing the existing authentication provider. This would require very little code to accomplish, but would require some basic architectural knowledge (including, but not limited to, using the provider pattern, understanding how to use inheritance to change class behavior). In general, modifying the behavior of DNN controls is more difficult than modifying the underlying providers themselves, especially in an upgrade-friendly manner.
4) This is very contextual. Is a module easy to modify? Yes, you just change the source and recompile. Is it easy to modify a module to accomplish some task? That depends on the task.
5) There is a learning curve for module development that is heavily dependant on your level of software development competency. Fortunately, resources exist for virtually every level of knowledge such that almost anyone could develop one with some effort. Expect to invest some time in learning the DNN framework architecture, it will be necessary to accomplish all but the most basic tasks. Modules CAN be used in a non-DNN environment with some advanced planning and modifications, but in general expect a DNN module to stay in the DNN universe.
6) Skinning in DNN is very straightforward, but will heavily depend on your existing html/design/css skills.
7) Custom software requires effort. To accomplish specific domain-orientated tasks in the DNN (or any, really) environment, expect an up-front investment in learning about the environment. DNN is an excellent framework, but there is no free lunch. Your success in custom tasks will depend heavily on your own software competencies.
Hope this helps!
Brandon