One of the least uncertain aspects of Bitcoin is the number of BTC awarded per block mined. That is dictated by the protocol. The code is open source so you can check if you're willing and able.
Basically, though, the block reward gets halved every 210,000 blocks. That's happened once so far, and no-one pulled any switch to do it. Everyone running a Bitcoin node or miner simply runs code that has the same requirements to accept a block as valid. Some miner could have modified their software to produce 50-coin blocks even after block 210,000, but that would be pointless if other peers in the network weren't running software with the same modification.
You also stated block creation must be faster than one per 10 minutes on average now. It's possible that's temporarily true, but the network retargets the difficulty of finding a block to maintain the balance at 10 minutes per block. This is done by comparing the time it took to calculate the previous 2016 blocks, starting from the previous difficulty retarget, to the expected time of two weeks. If it's less, or more, the difficulty required for a block to be valid is adjusted to compensate, making it harder or easier to find a block. All the information needed to do this retargeting is publicly available.
You may want to have a look at: https://en.bitcoin.it/wiki/Difficulty
In brief, there are no mystery hands behind the curtains pulling strings to make things happen. You're right that many of the basic choices were arbitrary - the maximum of just short of 21,000,000 BTC and the block creation time being obvious examples. The rules are, however, transparent, and in order to change any of them you'd have to modify the core software and convince people to start using your modified version. That wouldn't be very easy, since it would create a competing currency forking off the Bitcoin blockchain. Anyone holding Bitcoins would likely be pretty wary of such modifications, because the effects on the value of BTC could be deleterious.