When user-1 post an order of selling btc, user-2 comes and fulfill that order, we noticed that instantly user-2 receive btc in his/her wallet. My question is how is it possible to send btc instantly with out any charges.
Your deposited funds are in the custody of an exchange. Since your payment instruction only moves the exchange's obligation from you to the recipient, it is detrimental to make an on-chain payment. They'd be paying a fee to send to themselves. Instead, the exchange simply updates their database to reflect your transfer.
They are not transferring coins. They are issuing IOUs that are only valid on their platform.
The coins are not transferred until a user makes a withdrawal to their own wallet, which usually does involve a withdrawal fee. Similarly, your initial deposit to the exchange is much slower, and involves a transaction fee, which is paid by you.