I'm getting a fee is required message when sending a 0.01 bitcoins or even 1.00 bitcoins. Why is that? Where are the rules exactly?
When you send bitcoins you have to "exercise" a previous transaction output in its entirety. This means that if you want to send somebody less coins than the transaction output, you have to send the extra coins to a new address which you own.
For example this transaction
http://blockexplorer.com/tx/fe9e30d43ed35f24dd909b3d719f0ec29a3f0171b35974fa1594645d1a41424d is either somebody sending 0.01 coins to 19QQ... or somebody sending 0.04 coins to 19uX... and the person who owns 1FoD... owns one of the output addresses.
From the perspective of the network the transaction looks the same (regardless of which address 1FoD... owns) so it has to charge a fee on the transaction. (Not this transaction but other transactions where an output is less than a cent.)
The next version is smarter about choosing the input transaction to avoid this fee.