The short version is that the sender pays the fees, not the receiver. If you ask a wallet to send 33 millibits, you pay more than 33 millibits, and the receiver receives 33 millibits.
But it sounds like you're using a wallet that shows it to you differently. For instance, Coinbase (which is an exchange and web wallet, of sorts) doesn't charge you transaction fees at the time the actual Bitcoin transaction happens. They probably do this to reduce confusion in how their services work, what your balances are, and when fees are charged.
E.g. if I want to buy .033, it will charge me for (.033 btc at the current buy rate + a bank fee + a coinbase fee), and it will show a balance of .033. I can send .033 to an address, and it adds the transaction fee for me. Your service probably did the same thing.
Other clients (including Bitcoin-QT and Multibit) show your total balance and require that you pay fees out of that balance; so if I have a balance in Multibit of 1 BTC, I can only send about 0.998 BTC, because I need to pay a transaction fee for most clients to relay my transaction.
You asked wallet A (hosted by somesite.com) to send 33 millibits to address C (address "17BK..."). Your transaction actually looked like this:
- input: address A ("1PAR..." in wallet A) - 33 millibits
- input: address B ("1Mjf..." somesite.com) - 0.64443 millibits
- output: address C ("17BK..." in wallet B) - 33 millibits
- output: address D ("14ov..." somesite.com) - 0.44443 millibits
- transaction fee: 0.2 millibits (calculated from input - outputs)
The second output, to address D, is the change (if you had sent less than your total transaction amount, some of the change would belong to you; as it is, it sounds like it belongs to somesite.com). This exists because a transaction output must be used in its entirety. somesite.com decided to use the money in addressees A and B in order to have enough money for the transaction. Since your inputs came to 33.64443 millibits, and your desired output+fee only comes to 33.2 millibits, the extra money is sent to an address that somesite.com owns (address D).
172 confirmations in three minutes is practically impossible, as one confirmation takes, on average, 10 minutes (not one second). As you noticed, it was instead saying that the first confirmation took 3 minutes, and that 172 total confirmations had been done.
It's expected that the balance of wallet B went up by the full 33 millibits - what you might not've realized is that it cost somesite.com a total of 33.2 millibits, because of the transaction fee. That is, the sender pays the transaction fee. somesite.com showed you a balance of 33 millibits, even though they had to pony up more than 33 to actually use it.
Even though the balance of address A was exactly 33 millibits, somesite.com also had the balance of address B to pull from.