The only thing I don't understand from that article is the first example. The change is coming from the vendor right? If He's paying 3BTC for something that costs 2.999BTC, he should get back .001 - why does the fee get charged to him?
Also, I don't get why he can't complete the purchase even with the fee. If he gets .001 back in change and the fee is .0005 - he can still afford it with .0005 leftover, right?
First of all, the change is not coming back from the 'vendor'. The change never reaches the vendor in the first place - the transaction is generated within your client and the change is sent from one of your addresses directly to another of your addresses. The vendor only gets the amount you intend to send them - the purchase price.
So
2.999 BTC - to vendor for purchase
+
0.001 BTC - change (directly from your wallet into another 'change' address in your wallet)
+
0.0005 BTC - transaction fee (caused by having a low output - the 0.001)
These three amounts add up to 3.0005 BTC which is more than you have in your wallet, so the transaction cannot proceed.