The lobby server simply displays registered servers to clients. Clients still connect to the player-ran server (and all traffic then flows between client and player-ran server).
Channels are a way to break up parts of your game: you might have a "Trade" channel and a "General" channel, for example. There are many uses for them, I'm sure, but I'm drawing a blank. So far I've only needed one channel per server instance.
"Host" as defined by TNet isn't necessarily the host of the server; the host is whoever joins a channel (a channel, not the server) first. You can transfer host as well. The name is terribly misleading, and I've been nagging ArenMook forever to change it to "Operator" or something

To reiterate: the lobby server never sees any RFCs nor has any knowledge of host or any channels on any servers. Simply passes the server list to players. Each individual server then has a channel list and the player joins a channel after connecting to the server. All traffic passes from each player through the game server to each other player on that server (except where specified otherwise, eg: Target.Host).