An addon domain is a functional domain that can be created from within your control panel or it is a domain that is added to your hosting account. To put it in simple way, think of it as having multiple hosting packages all sharing the same control panel where you create email, forwarders etc. - the same way you do for the main domain within your hosting account. In addition, addon domain will not function unless the domain name is registered with a valid registrar.
Whereas, Subdomain is the portion of a domain name. What's more, subdomains allows you to put content in your URL before your domain name, such as blog. or shop. For instance, if your domain name is agmwebhost.com, then the subdomain name could look something like this: blog.agmwebhost.com
Did that make sense? If yes, Cheers!