When I do reverse DNS queries with IP address that I obtained from DNS query of one website, it shows many different domain names, why is it so? I thought if I do the reverse DNS query I will obtain the domain name which I did with just DNS query. Reverse DNS doesn't work correct or all those names are correct? I don't understand
The mapping between an IP address and a domain name isn't one-to-one. You can have any number of (possibly completely unrelated) domain names pointing to the same IP address. (And conversely, a given domain name can resolve to several different IP addresses.)
This is perfectly normal, and quite usual.
Because the hosting provider uses virtual hosting. With one/several server/s using a web server like Apache is able to handle many domains with one public IP. As you may know, with the imminent exhaustion of the central pool of IPv4 addresses, any public IP is a great asset.