Other wallets or exchanges might charge you multiple mDASH for sending or withdrawing, which can be up to a few USD. Dash aims to be digital cash and is intended to work like handing over physical cash, where you also don't pay fees (except for the work required to hand over the cash and getting it there). For cryptocurrencies there is a transaction fee, which is paid to the miners that include your transaction in one of the next blocks on the global ledger. If the blocks are full like for BTC or even ETH, fees can get very high as people are fighting on getting in.
Luckily Dash has 8x the block size/time (and going up way more in the future) and is by far not as full other blockchains, so you can even get away with the smallest allowed fee. If the network is free a super tiny fee like 1 duff/byte (1 duff = 1/10 million Dash) is no problem and the default minimum since 0.12.2 for the full Dash Core wallet.
MyDashWallet is non-profit, there are no hidden fees and what you pay is used to pay the miners automatically when the transaction is created and accepted in the blockchain, nothing ends up anywhere else.
Anyway, you will only pay this super tiny fee, which amounts to around 0.1 cents (yes, that is up to 10 transactions per single cent). This fee does NOT depend on the amount you send, but it is not always the same and depends on how much data your transaction contains (multiple inputs if your wallet is fragmented drive the price up, see examples below).
InstantSend has a fixed tx cost of 0.1mDASH per input, which amounts to about 3-10 cents right now. The advantage is that your transaction is accepted and locked in about 1 second, which is very cool and useful for quick purchases. Obviously due to the higher cost this is off by default.
PrivateSend is currently only possible with full node by using the Dash Core full Wallet on your PC. It requires pre-mixing of your Dash into newly generated addresses owned by you and is done via the masternodes of the Dash network, which can take a few hours. No hardware wallet or thin client supports this feature, but MyDashWallet gives you the option to send your Dash into an autogenerated anonymous address, which mixes it for you and sends out privatized Dash to the given target address.
Receiving Dash on any address you own is free for you, the transaction fee is always paid for by the sender. You might need to wait a bit until a transaction is confirmed (up to 2-3 minutes). If InstantSend was used by the sender the Dash amount will be confirmed by the network in a second and should show up in a couple of seconds on MyDashWallet as well. The website will update amounts every 10 seconds, if you have a huge amount of addresses it might take a bit longer, but the Dash is yours and usable right way.
Unconfirmed amounts will be supported soon. When this feature is important for users, it will be voted in and be implemented, then unconfirmed amouts are shown in brackets on each address and the total amount on the top behind the confirmed value (unconfirmed amounts can be used then, but outgoing transactions only become confirmed once all inputs are confirmed as well). For example: 0.013 DASH (+0.002 DASH). Once that amount is confirmed only the total amount is displayed, in this case: 0.015 DASH