Get all users with specific roles using EntityFieldQuery
To be honest, I have no idea on how to achieve this. Good examples of how to use the EntityFieldQuery are hard to find. Since noone has answered this question yet and I'm also interested in the solution I'll try to help you out. Described below is my best guess.

A thing to keep in mind: roles are stored in a different table than users. They are added using UserController::attachLoad.

There seem to be three different conditions that you can use with an EntityFieldQuery:


entityCondition (Entity specific conditions:'entity_type',
'bundle', 'revision_id' or 'entity_id')
fieldCondition (Conditions on fields maintained by the Field
API)
propertyCondition (Conditions on entity properties)


The most logical option (if there is one) would be to use a propertyCondition, but as roles are added to the user in UserController::attachLoad I don't think the EntityFieldQuery has access to it. I think the EntityFieldQuery just uses the schema defined in hook_schema().

This leads me to believe that what you're trying to achieve is impossible. A workaround would be to get all the uids with a normal query:

I don't have access to Drupal right now, so the code below might be off. I'm sure somebody will edit the mistakes.

// Use $query for readability
$query = 'SELECT DISTINCT(ur.uid) 
  FROM {users_roles} AS ur
  WHERE ur.rid IN (:rids)';
$result = db_query($query, array(':rids' =&gt; array(1,2,3)));

$uids = $result-&gt;fetchCol();

$users = user_load_multiple($uids);


If it is possible to achieve what you want with EntityFieldQuery, I'll be enlightened.