Verwenden Sie $elemMatch zum Auffinden verschachtelter Arrays und $ in Ihrer Projektion, also fragen Sie wie folgt ab:
Meteor.users.findOne({
"_id": userId1,
"profile.friends": {
"$elemMatch": {
"_id": userId2
}
}
}, {
"profile.friends.state.$": 1
})