Both you do the same thing, the difference is only as the name says, Republish Site will republish all items while republish item will only republish the selected item.
The difference between smart, incremental and republish you can see here:
http://www.sitecoreinsight.com/sitecore-publish-site-tool-publishing-modes/
And about the cache, yes, it always clear the cache :)
You can check that in a event handler on your web.config file. That is the proccess responsible for it and it is fired when any type of publish ends.
<event name="publish:end">
<handler type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel" method="ClearCache">
<sites hint="list">
<site>website</site>
</sites>
</handler>
</event>
UPDATE:
It clears all HTML cache for the list of sites you see in the configuration above. Publishing does not affect the items cache, I actually don't know what Sitecore does to renew such cache.
There is a tool
where you can check the cache status:
http:// your domain /sitecore/admin/cache.aspx
Also take a look at this post, it has a good overview about Sitecore caching
http://sitecorebasics.wordpress.com/2011/03/05/sitecore-caching/