What stops us from reducing the TTL of all DNS entries to 1 minute or something less?
If that is done we won't have to wait mych for DNS changes to propagate so what all things force us to not do it.
Nothing, happens all the time during major changes.
On a serious note this is a very poor quality 'question' for this site, it's not a discussion forum, please raise your game.
If you have control over your own DNS TTL then there is nothing that stops you from setting it to 60 seconds.
Be aware though that some caching DNS servers will ignore your TTL and use their own so the changes you make may still take a long time to be seen.
Some company already do : They keep all their DNS ttl at 300 second.
It can be useful when you rely on dns gslb to get datacenter redundancy.
There are some caveats, but without datacenter outage, everything works very well.
The short answer:
It would hugely increase the load on many servers, without gaining any substantial benefit.
The longer version:
Nothing stops you, and your nameserver software may already support enforcing a maximum TTL (for example BIND has configurable "max-cache-ttl" and "max-ncache-ttl" options, which control the maximum TTL value for caching positive and negative responses respectively.)
But it's not generally a good idea, as setting an arbitrarily low TTL defeats much of the value of caching, needlessly and significantly increasing the load on both authoritative and recursive servers.
The thing is -- most of the information in the Domain Name System doesn't change very quickly at all. For the information that does change frequently, the TTL can be set low. In short, the system is already designed with a mechanism for properly expiring rapidly changing DNS information, which works quite well if operators set the TTL on their resource record sets appropriately.