1) Bitcoin base layer - Who determines the bitcoin transaction fees? Is it the sender? For example, if the sender wants to increase the likelihood of miners including the senders transaction into the candidate block, then the sender can set a higher fee to compensate the miner? If this is the case, then how come most of the common exchanges have a fixed bitcoin withdrawal fee (usually around 0.0004 bitcoin or around $20), which I am unable to change?
For the question of fixed higher fee by exchanges, let's see these two factors and/or scenarios.
1. Can we see exchanges as intermediaries between us and the blockchain chain? If this is true, it therefore means that there is what is supposed to be called "exchange fee" (reward of the exchanges). Then, there is a compulsory "transaction fee" from the blockchain. The former is controlled by the exchange, while the later is not controlled by them directly. So, they attain fixed fee by always varying their exchange fee with respect to transaction fees, which is always shown to us as one and a fixed fee called Transaction fee.
2. Also, maybe those transaction fees are set that high and fixed to avoid massive withdrawals from the centralised exchanges at a particular time. The high fee technically reduces the amount of withdrawals placed at a time and hence give them time for cool manipulations.