To put it simply:
Internal DNS
If you have a network with several devices/servers attached, then you might want to consider an internal DNS server, so you don't have to remember which device was located at which IP address.
It is much more easier to remember a name instead.
It get even more tricks to remember the address of an local device if you use IPv6 as the address can be rather long such as 2001:db8:cafe:beef:1234:5678:90ab:cdef
.
All names stored on the internal DNS usually share the trait that none of them are accessible from the Internet at large.
- Another reason why you may want consider internal DNS is because you want to use it as a caching DNS, since it can improve response time when several clients on the same network request the same hostname.
The idea is that the first time the hostname is looked up the response is stored in the local cache until the TTL for the record has expired.
Any subsequent requests for the hostname will looked up in the cache instead of asking the original DNS server hosting the hostname.
External DNS
This part is a bit more simple, as it is only relevant if you have purchased a domain name, because this is the place tell everyone on the Internet where your website and services is located.
For the inexperienced people I would certainly recommend not hosting your own external DNS, due to there are many security considerations to take care of.
Instead use of the commercial available DNS providers.