AppHarbor is a multitenant platform and we're running multiple application on each application server. A worker is an actual worker process that is limited in terms of the amount of resources it can consume.
We'll add a more detailed explanation of what a worker actually is.
2 workers will always be on two different machines. We're probably going to reuse machines when you scale to more than that and increase process limits instead (this could yield better performance as you need to populate fewer local cache etc.)