One of the major drawbacks of the Civi community is that, as noted in a previous post, it can be really hard to get oriented--information is stored in a lot of different places, and it's hard to figure out if you've read everything you should. So it shouldn't come as a surprise that it's hard to figure out how decisions get made, how conflicts are worked out, etc.
From my time at a sprint where both code and documentation were being written, I can infer that decisions are made collaboratively through conversations among the core team and active community members--and sometimes who is included just depends on who's in the room (literally the physical room or the IRC channel) at a given moment. But I also think there's a sense that involved people have of when a decision can be made in the moment and when it needs further discussion. But it seems to be totally unwritten. At least, none of this is documented in a place that I can find.
After looking in all the places I could think of: main website, developer wiki, the general discussion section of the community area of the forums, even a regular Google search, I couldn't come up with much: a lone thread on the forums, tangentially related.
I added a question to that thread, and sent an individual email to one of my contacts. If and when I get a response I'll post an update.
UPDATE: Here's what I got from Dave Greenberg, one member of the core team:
"In general, decision making is by consensus within the core team with lots of consultation with other active contributors. We rarely have a problem reaching consensus—-but on the rare occasion Lobo acts as the benevolent dictator."