Question: Does anyone know what the difference between the 3 main types of publishing in Sitecore are?

I have the option to do a republish, incremental publish and a smart publish

My understanding is that a republish will publish everything but I don't understand the incremental or smart options

Answer: 
* Incremental Publish : publishes only items that are in the publishing queue. Every time you change an item, the item is automatically added to the publishing queue. If the changed item is part of a workflow, the item is added to the publishing queue when it reaches the final workflow state.
Incremental Publish is the fastest way of publishing because Sitecore does not use resources to compare versions of the items that are in the publishing queue before publishing them.
* Smart Publish : publishes all items that have changed since the last publication. When you run a Smart publish, every item in the Master database is compared with the equivalent item in the target database and, if an item has changed, it is published
Comparing all items in the database makes this a time-consuming way of publishing your entire website, particularly if the content tree contains many items.
* Republish : publishes everything. Republish overwrites every item in the target database with the equivalent item from the Master database, even if it has not changed. In this way, republishing removes all obsolete versions from the target database. You can use republishing to bring a new web database online, to restore a backup of the master database, and to add a new content language, a new publishing target, or other system items to the website.

More info (screenshots) here: <https://doc.sitecore.net/sitecore_experience_platform/80/content_authoring/publishing/publish_a_website>
This might help understand it.

<https://sitecorebasics.wordpress.com/2011/05/22/basics-of-sitecore-publishing-modes/>

Cheers,
D