What is the difference between UT0, UT1 and GMT time? Every reference I find says that they are "essentially" the same, which we all know really means that they are not the same, but different only by a some small amount that someone else other than me decides is negligible.
They also like to say that UT1 and UTC are the same, but if you look into it you find that they differ by as much as 0.9 seconds.  This is, admittedly, insignificant to me.  But the practicality of it is not my concern here. The technical reality of it is.
I want specifics and exactness where applicable here.
 A: Simpler answer: 
UT1 is the time used for most common purposes.  It follows the sun and the earth's rotation.  There is always 86400 seconds in a day and always either 365 or 366 days in a year.  Unfortunately the length of a second or day varies by a tiny amount from one year to another.  In computers, it's usually modeled as an integer number of seconds since the epoch, which, for unix, is Jan 1, 1970, midnight GMT/UTC/UT1 timezone.  Exact hours are always even multiples of 3600 seconds.
UTC is time as measured by atomic clocks.  The second is always the exact same amount of time.  Unfortunately the earth's movement isn't so exact.  So, the powers that be insert a 'leap second' every so often on Dec 31 or June 30, and the time is then 23:59:60 for just that second.  (They're inserted irregularly but there's been about two dozen since the 1970s.)  So, the count of seconds for UTC is rarely an even number at the end of an hour.  But, at least you know the time exactly.  
Most of us can set our clocks to either, as the slide of a second isn't noticed for most practical purposes.  If you're late to a meeting, you can't blame it on leap seconds.
A: 
What is the difference between UT0, UT1 and GMT time?

UT1 (Universal Time 1) measures the Earth's rotation with respect to the distant stars (quasars, nowadays), scaled by a factor of (one mean solar day)/(one sidereal day), with small adjustments for polar motion. There are exactly 86400 UT1 seconds in a UT1 day.
UT0 represents uncorrected observations of the distant stars / quasars by single stations. Nowadays, simultaneous use of multiple stations is the norm in the form of Very Long Base Interferometry (VLBI) techniques. The different rates at which atomic clocks tick at those different stations and the different ways in which polar motion affects those different stations has to be taken into account in order to use VLBI. The use of VLBI makes UT0 an outdated concept.
TAI (International Atomic Time), which you didn't ask about, measures time according to a number of atomic clocks. There are exactly 86400 TAI seconds in a TAI day. The TAI second is based on the Earth's average rotation rate between 1750 and 1892. A UT1 day is now a couple of milliseconds longer (on average) than is a TAI day thanks to the slowing of the Earth's rotation rate. 
This creates a fundamental problem. It is now universally agreed that atomic clocks provide a much better measure of time than does the Earth's rotation, yet for human comfort, we would still like time to stay in sync with the Earth's rotation. How to accomplish this?
GMT (an archaic term that is deprecated except in Great Britain) has now become another just another name for the time zone UTC+0h. Prior to 1972, GMT was the de facto standard that attempted to keep universal time and atomic time in sync. The old GMT adjusted the length of the last minute of every day to keep the two disparate concepts of time in sync. The BBC incorporated these daily adjustments in their broadcasts of the "six pips". The US and Canada did much the same with their radio-based time broadcasts. The daily adjustments used in GMT were becoming ever more problematic with an ever more connected and ever more precise world. These problems motivated the replacement of GMT with UTC.
UTC (Coordinated Universal Time) is the modern successor to GMT. A UTC second is by definition always exactly equal to one TAI second, but like the old GMT, a UTC day is not necessarily 86400 seconds long. The difference between the old GMT and UTC is that in lieu of the small daily adjustments used in the now deprecated GMT, the adjustments to UTC are infrequent and are always exactly one TAI second. These are leap seconds. The predictability and the current close match between UT1 and TAI means that leap seconds can be announced well in advance, only have to occur on June 30 or December 31, but can still keep UTC and UT1 within 0.8 seconds of one another. (Aside: This will not remain the case in the not too distant future.)
The rationale for switching to intermittent leap seconds was that doing so would keep time uniformly except for those intermittent leap second boundaries, and the problem introduced by those leap second boundaries could be easily circumvented due to the announcement of those jumps well in advance of when they would occur. This has turned out to not be the case; a number of different computer systems (e.g., Microsoft, Unix, and MacOS) have problems with leap seconds. There are moves afoot to get rid of leap seconds.
A: UT1 is a specific "flavor" of Universal Time, which is a measure of Earth's rotation relative to the mean sun, a fictitious "prime mover" upon which all our clocks are based. UT1 is related to sidereal time (Earth's rotation relative to the fixed background stars) by a rather long mathematical expression usually expressed as a polynomial function of mean solar time. Earth's rotation is not uniform though; it varies. UTC (Coordinated Universal Time) is a specific "flavor" of Universal Time intended to smooth out these variations by staying within 0.9 s of UT1. The difference between the two is called $\Delta UT1$ and is adjusted as necessary, but can only be adjusted after observation. Larger adjustments come in the form of leap seconds. The current approximate value of $\Delta UT$ is called $DUT1$ and is encoded in the standard time signals broadcast by stations such as WWV (in America) and CHU (in Canada). Listen for doubling of pips at the beginning of each minute.
UT0 is an observational approximation to UT1 based on meridian observations of standard stars. UT0 must be corrected for polar motion, which varies from observatory to observatory.
Both UT1 and UTC are generically referred to as Universal Time and the distinction between them is important only if the that maximum discrepancy of 0.9 s is important for your application.
There is another "flavor" of Universal Time called UT1R, which is intended to account for tidal variations in Earth's rotation.
There is another "flavor" of Universal Time called UT2, which is intended to account for seasonal variations in Earth's rotation. UT2 isn't used any more.
GMT, Greenwich Mean Time, is a sometimes deprecated historic term equivalent to UT, but is no longer used in astronomical applications. It used still used in many civil applications though (and remains the legal time standard (outside the period of daylight-saving summer time) in the UK). 
By far your best reference on this topic is the latest edition of The Explanatory Supplement to the Astronomical Almanac, edited by Sean Urban and Kenneth Seidelmann. The third edition was just published in November by University Science Books. My own book, Fundamental Ephemeris Computations (Willmann-Bell, 2000) also discusses this topic and includes computer code.
Be aware that since FEC was published, certain astronomical terminology has changed and now the term "Earth rotation angle" is now used to mean roughly what sidereal time previously meant. The new terminology is reflected in the new Explanatory Supplement referenced above.
