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: 
The different publish types define how Sitecore will evaluate which items to move from the master database into the destination publishing target (typically web).

Republish will publish every single item from the source db into the destination db without any checks on whether the item in the source db matches items in the destination db.

Smart publish will scan each item in the source db and compare the items in the destination db, if the version in master is newer then it will publish the items.

Incremental publishes are based on entries stored in the publish queue and history db table. Whenever items are updated via e.g. editors in the content editor it will add an entry into the history table. An incremental publish then uses this data to decide which items to include in its publish operation.
This one maybe could help 

<http://www.kewlcodes.com/posts/1149/sitecore-publishing-queue-and-smart-vs-incremental-publish>

Cheers,
D