Thanks Howard.
Sorry if I have introduced some confusion, as I had tried to keep the conversation as non-technical as possible.
Here's a more in depth and technically complete explanation.
From the MoodleDocs: https://docs.moodle.org/28/en/Messaging_settings
"SMTP stands for Simple Mail Transfer Protocol. The SMTP host is an email relay that will take the email from Moodle and send it to users. You will need to set this only if your server does not allow mail relay. Otherwise, PHP will send out the mail using its built-in mail server. All the email sent by forums and other modules will be sent through this host. "
Moodle uses an internal library called PHPMailer (another open-source project) . Moodle customises this using a subclass so it can retain the vanilla PHPMailer code and easily update the base class.
The method of sending emails is determined by what is entered in the Site Administration Email parameter smtphosts. This is set in <yourDomain>/admin/settings.php?section=messagesettingemail, along with the parameters such as security and smtp authentication username and password parameters.
What happens to email is coded in the moodlelib.php file, and from reading the code it has three main options:
1. if smtphosts is empty - uses the inbuilt PHP mail() command
This is configured in php.ini as Howard notes. For Unix and Linux servers the mail is delivered by a local binary such as Sendmail, Qmail etc.
The PHP reference site php.net states: http://php.net/manual/en/function.mail.php
The Windows implementation of mail() differs in many ways from the Unix implementation. First, it doesn't use a local binary for composing messages but only operates on direct sockets which means a MTA is needed listening on a network socket (which can either on the localhost or a remote machine).
So for Windows servers you need to configure php.ini to point to a SMTP server (can be localhost if there is on on your server).
2. if smtphosts is set to 'sendmail' or 'qmail' then PHPMailer will use a unix shell command to communicate directly with the relevant binaries.
3. if smtphosts is set to a valid smtp server address (an IP Address or a FQDN- fully qualified domain name - such as mail.mydomain.com), then PHPMailer talks directly to that SMTP server using it's inbuilt SMTP class.
So there it is, hopefully I haven't lost too many minds along the way.
Finally, what is the best method to use? Well that depends upon your server resourcing, and size of your site. In larger sites it is best to simplify the operations on the main server and delegate as much as you can, in which case using the external smtp server, where all email sending, retries etc, are managed by the smtp server, and not the local server. Personally I would suggest this is the best option, as there are other support functions that may be better managed through a dedicated server for this purpose.
For a small, simple site, then you may use any of the options above. That is of course until you hit a problem, and you need to delve deeper Like James Cameron when he went to the deepest part of the oceans and saw many "interesting things", so will you.
Have fun and enjoy the process.
Gary