1. Internal = Injected. This kind of hack has access to all the game memory from inside.
External = Not Injected. usually this sort of hack uses Reading/Writing routines to get the stuff he needs.. Usually safer than Injected ones.
2. If you're talking about C++ Dlls, they usually doesn't have any encryptation. But you can't get the source code back cause the dlls is made of just Machine Code. And most time it has been optimized, so a lot of the code is simply gone. .NET Dlls on the other hand can be decompiled if they aren't encrypted.
3. When you create your project usually there's an option to generate a dll instead of an exe.
4. Mostly C++ i guess.
5. You learn a language then make it
6. There should be some on google :S