A lot of questions, but all it boils down to is: .
Banks usually perform T+1 net settlements, also called Global Netting, as opposed to real-time gross settlements. That means they promise the counterparty the money at some point in the future (within the next few business days, see delivery versus payment) and collect all transactions of that kind.
For this example say, they will have a net outflow of 10M USD. The next day they will purchase 10M USD on the FX market and hand it over to the global netter. Note that this might be more than one transaction, especially because the sums are usually larger.
Another Indian bank might have a 10M USD inflow, they too will use the FX market, selling 10M USD for INR, probably picking a different time to the first bank. So the rates will most likely differ (apart from the obvious bid/ask difference).
The dollar rate they charge you is an average of their rate achieved when buying the USD, plus some commission for their forex brokerage, plus probably some fee for the service (accessing the global netting system isn't free).
The fees should be clearly (and separately) stated on your bank statement, and so should be the FX rate.
Back to the second example: Obviously since it's a different bank handing over INRs or USDs (or if it was your own bank, they would have internally netted the incoming USDs with the outgoing USDs) the rate will be different, but it's still a once a day transaction. From the INRs you get they will subtract the average FX achieved rate, the FX commissions and again the service fee for the global netting. The fees alone mean that the USD/INR sell rate is different from the buy rate.