I know that NAT is used to map Private IP addresses to Public IP addresses. But can we also map Public IP addresses to Public IP addresses? And does this serve any useful purpose?
Can the Router's WAN Port have Private IP when we use Double NAT?
Can we have Multi Level NAT? And can this, at least in theory, solve the problem of IP address exhaustion?
Yes, you can NAT any IP to any IP (as long as you own the IP or it's a private block). I've NAT public to public before to deal with weird asymmetric routing issues as an alternative to policy routing.
Yes, this type of scenario (where the router has private IPs but NATs public ones) typically occurs in large enterprise and campus networks, where you route a public IP block to a router and the router NATs these blocks without having an IP address on them. It works, but it's very confusing for people unfamiliar with it or if it's poorly documented.
Yes, carrier-grade NAT (CGNAT) but it will break applications which depend on consistent source port mappings as well as make it extremely difficult to implement destination PAT. No, this won't solve IP exhaustion, and it will make everyone's (developers and infrastructure) life difficult. IPv6 is the only answer to IP address exhaustion.
"And does this serve any useful purpose?"
Yes, if you bought 3 static ip's from your IP, you could use 1 for a router to do NAT and act like a gateway to the internet for most of your network. You could use the other 2 to give them to computers to make them public on the internet. Like a web server for example.
This isn't double nat, but yes you can assign an IP to the device so you can access it's configuration options.
Yes ISP could use a much smaller portion of the Ip's they currently use by giving out private address's and using CGNAT. Like Quailman pointed out, you wouldn't be able to run any services from inside your network to the Internet, it would however help with IP exhaustion.