I have no idea if the transaction is less than 10,000 bytes.. How am I to know this?
What does it mean when it says: "All outputs are 0.01 BTC or larger" (outputs? what is that?)
Besides the written explanation above, here is the rest of the info you need:
http://bitcoin.stackexchange.com/questions/7537/calculator-for-estimated-tx-feeshttp://bitcoin.stackexchange.com/questions/1195/how-to-calculate-transaction-size-before-sendingIn particular: in*148 + out*34 + 10 plus or minus 'in'
Bitcoin addresses are not accounts. The wallet metaphor is more appropriate. You have a collection of individual payments, like a stash of banknotes of different sizes. You can add them up, but they are still separate, just like putting two $20 bills in a wallet doesn't turn them into a $40 bill.
Inputs are these separate payments. Outputs are who you are paying. Your change is an extra output coming back to you. Inputs are merged into outputs through this transaction.
If you have received 50 x 0.0001 payments, the total is 0.005. But to pay somebody 0.005, a transaction is created that sends all 50 inputs to one output.
In this case, we have:
148 bytes x 50 = 7400 bytes
34 bytes x 1, for a total of 7431.
However, the "output" is 0.005, which is less than 0.01 so a fee must be included.
The absolute minimum fee is 0.0001 per kb, so the absolute lowest fee you could pay is 0.0008 (~7.5k rounded up).
Change adds an interesting complication. Suppose you wanted to pay 0.100 to somebody, but the best match of input amounts added up to 0.1003. The transaction would be a collection of input amounts, to two outputs - 0.1 to the person you were paying, and 0.0003 back to you for change. This also triggers the "output < 0.01" rule.
For what its worth, yes, most people agree this fee structure is far less than optimal, but its what we're stuck with for now. Fixing it effectively requires everyone to upgrade. If you look at
http://luke.dashjr.org/programs/bitcoin/files/charts/branches.html we've still got people running 0.3.x through 0.7.x from years ago. This is going to take a while.
You can see the work being done in 0.9 to make the 0.9 code self adjust to network health when deciding what the fee limits will be.
Make no mistake, this is about the bitcoin network and blockchain health. It is denominated in bitcoin and was set up when spam was a bigger problem and bitcoin trading value was nothing like it is today.
BTW; you can coalesce small "dust" (what these tiny amounts are called) into larger ones. It takes a bit of effort, and you already have to have a bunch of bitcoin to do it. eg: if you have 0.01 btc and a collection of 0.00001's you can pay yourself 0.01 btc + a bunch of the 0.0000xx's. So long as you don't hit 10kb, and the inputs have aged enough to not hit the priority trigger, then you can merge these into larger coins. But, it is slow and you already have to have some btc to piggyback the dust onto.
TL;DR: don't generate dust like this. It's nothing but a headache - even more so for the recipient than the sender.