Usa $elemMatch per trovare l'array nidificato e $ nella tua proiezione, quindi interroga come di seguito:
Meteor.users.findOne({
"_id": userId1,
"profile.friends": {
"$elemMatch": {
"_id": userId2
}
}
}, {
"profile.friends.state.$": 1
})