Thanks Gordon for your detailed response.. I went off to test a few more things. Thought I post it here as it might be useful for others:
1) Getting VWAP from subscription of "reqRealTimeBars" (updates every 5 secs) depends on when you subscribe. Not sure how exactly it's calculated but the first VWAP value is always the closing price of the first 5 sec bar after the subscription was made and ofcourse the subsequent vwap calcs are made of the first value, i.e. this value can be very different than what you see on TWS charts.
2) The VWAP value on TWS chart remains consistent regardless of the candle size you choose (1 minute, 5min, 15min, hourly, daily)
3) VWAP value coming from the subscription of "reqHistoricalData" with "KeepUpToDate=true" is closer to the what's shown in TWS charts.
4) As you mentioned, volume and HLC price between different vendors maybe slightly different, but with TWS API all data comes from TWS, that's why the fixed difference between VWAP values of TWS and it's API?(when using "reqHistoricalData" with "KeepUpToDate=true"), even of a few cents, does not make sense to me. I imagine IB software engg. may have an answer to this but I will leave it be.
For now, since I have been using the 5 sec bars and wanting to avoid any new tick based subscriptions, I calculate vwap locally. As you pointed out, because of the aggregated data provided, the calc is not precise but serves my purpose.