What's the functional difference between the "disabled" and "external" caching setting? I've seen the answer elsewhere that "External lets you use varnish, etc" but what are the internal differences between external and no caching? Does external actually cache anything, or is there a difference in headers sent?
External caching is just a caching system that doesn't use the database tables used by Drupal to cache data, or doesn't use any table in the database used by Drupal. Example of external caching systems includes APC, eAccelerator, Memcache/Memcached, Varnish, XCache, or even a system that uses files instead of database tables.  

All those systems surely cache data, or there would not be any difference between using them, and disabling the cache completely. The only difference with the standard Drupal cache system is where the data are cached.