Why is multicast not supported over the internet ?
There is only one multicast range. Sharing that range across the Internet would mandate an address allocation scheme akin to public unicast addresses, so that the addresses you use are really yours and not used by someone else.
Additionally, using global multicast would require a global announcement and subscription system. Possibly, something similar to BGP with ASNs (or an extension) could work, but designing that would represent a huge project.
Why do we need to encapsulate in GRE ?
GRE hides your (private/multicast/...) addresses in the inner packet from the rest of the Internet that only sees the outer packet. Also, you use the outer packet destination address to direct the traffic where you want it, ie. from one site to another.
When we use the term 'internet', what exactly does it refer to?
An internet is any number of networks that are interconnected to each other.
The Internet is a global internet where a large number of carriers, ISPs and other organizations interconnect to form a (mostly) universally available network.
The differences include
- most internets are (by magnitudes) smaller than the Internet
- the Internet uses unique public addressing coordinated by IANA
- an internet can use any addressing scheme its participants agree on - it could even support multicast