If there is 0.5 bitcoin in daemon wallet, then how can I send whole to another wallet?
You have to manually set the transaction fee.
Because there is fee, I can't type like [ sendtoaddress <address> 0.5 ], right?
Correct. This would theoretically result in a zero fee transaction.
Then how can I know minimum transaction fee I need to set?
You can check the amount of UTXO you have. Command:
listunspent.
Then visit
https://estimatefee.com/ and enter the amount of inputs and the amount of outputs (probably one if you just want to move it to another wallet). Set the estimated confirmation time.
For example: A transaction with 4 inputs and 1 output which shall be confirmed within 4 blocks needs a fee of 2544 satoshis (4 sat/B).
How I can set at daemon?
Like Xynerise already mentioned, with:
settxfee <amount>.