Hi. What difference between EXTERNAL and INTERNAL injection method? How it works ?

1. If I inject dll file through injector it was external ?
2. If I write some code in c++ and start it to use through .exe file it was internal ?
3.Witch method is best and why?
4.What method best for undetected cheat ?

Any other information about injection method will be appreciated.

And 1 more question.

5.How injector programs working ? They inject .dll file into karnel drive ?