What is the difference between USB On-The-Go (OTG) and USB Host Mode?
They seem to be more or less the same. Are they?
In the context of Android devices, the terms are often used interchangeably.
USB has two different kinds of endpoint (connected device), like a client-server interface. One device is the computer (or host), and it's in charge: it's the server. All the other devices (the peripherals) are the clients, and can only communicate with the server. Usually, a device can only act in one of those two rôles: it wouldn't make sense for (say) a keyboard to be the host. That's the way the protocol works, and the connectors are designed to make that easier for users: hosts have the rectangular A connector, and peripherals have either the square B connector or a mini- or micro- version.
Host mode is a name for when a device is acting as a host. Every USB connection has exactly one device in host mode. PCs always run in host mode. (You wouldn't usually call it that for a PC, because it's not really a "mode", it's always like that.)
A phone is a bit different, though. Sometimes you want it to act as a peripheral: for example, so you can plug it into a PC, so the PC can access the phone's storage. Sometimes you want it to act as a host: for example, to connect a physical keyboard or mouse to it. This is why many Android devices now support USB host mode as well as USB peripheral mode: they can act in either rôle. But how can you make this work, when a host's USB socket is different from a peripheral's?
This is where USB-on-the-go (OTG) comes in. It adds an extra pin to the micro-USB socket. If you plug a normal A-to-B USB cable, the device acts in peripheral mode. If you connect a special USB-OTG cable, it has the pin connected at one end, and the device at that end acts in host mode.
This can be a little confusing if one cable has seemingly identical plugs at either end, which do different things. But cables with USB-OTG at both ends are uncommon: it's more common to use an adaptor, which has a host-mode USB-OTG plug at one end, and a rectangular USB-A socket on the other. You can plug a normal USB cable into this adaptor, and it will work normally.
The names refer to two different parts of the USB technology, but they're very similar. After all, if a device "supports USB-OTG," it must support acting in "host mode". The converse is often the case, but not always. Most Android devices that support host mode do so via USB-OTG, but there are a few counterexamples: the original Asus Eee Pad Transformer, for example, has USB-A sockets in its keyboard, allowing it to act in host mode without a USB-OTG cable. And of course PCs support host mode without USB-OTG.
So although the terms are usually used to mean the same thing in the Android world - can I plug a USB stick into my phone? - and for most devices it makes no difference which you're talking about, there is a distinction.