How do I calculate a possible height at which a block should be mined some time between 2 given times (say 8:00 am - 10:00 am)?
The average interval between blocks is 10 minutes for BTC. There are twelve of intervals of ten minutes in two hours, so nine or ten blocks is a good estimate.
You can’t. There’s no solid relationship between block interval and the time stamp in Bitcoin, you can’t estimate how many blocks will have been mined in any given period with any accuracy.