The whole idea of a batch job is that is not all processed immediately when you send a message via the Communicate tab. I.e. the individual emails get processed in batches, not all at once.
Quite so.
Thus, there must be some mechanism to cause those batches to be sent. In most email marketing-type software, that is run by a cron job or something similar, which calls a php script every X minutes, triggering another batch to be sent.
In EE, you need to keep your browser window open, it will refresh periodically and send another batch to the server.
To put it another way: If I have say, 1000 addresses on my list, and I choose a batch size of 100, how long will it take for all 1000 messages to be sent?
That depends on your server. It’s not 100 messages per minute or hour, it’s simply 100 messages per batch. EE will send all 100 of them to the server, one after the other, which will deal with them as it sees fit, at its own speed, then pause, then send another batch. Lather, rinse, repeat. The default SMTP timeout in EE is 5 seconds.