minrelaytxfee is used to define what the minimum fee should be on a transaction for your node to relay it...
mintxfee is the minimum fee that the client will
create a transaction with...
So, if minrelaytxfee is set to 0.00001 your node will happily relay any transactions with that fee or higher (ie. yours and other peoples txes)... however, if you then set mintxfee to 0.00005, then any transaction you create will have that value as the minimum possible fee, but you'll still relay other peoples txes with fees of only 0.00001.
As for minrelayfee and limitfreerelay... you'll see the reasoning if you read here:
https://en.bitcoin.it/wiki/Transaction_fees#Relayingminrelayfee is effectively the "free" level... but relaying rules don't include the 0.01 BTC output minimum requirement (refer:
https://en.bitcoin.it/wiki/Transaction_fees#Historic_rules_for_free_transactions).... so, to prevent a DoS attack of a bunch of transactions with tiny outputs and with the minrelayfee, you can set limitfreerelay and your node will only relay X thousand bytes per minute to throttle any spam