Has Cabal been fixed yet?
At least since August 2017: https://downloads.haskell.org/~cabal/Cabal-3.0.0.0/doc/users...
You don't need switching to Stack (as other commenters suggest) to have isolated builds and project sandboxes etc. If you want to bootstrap a specific compiler version, a-la nvm/pyenv/opam, use GHCup with Cabal project setup: https://www.haskell.org/ghcup/
Yes. Use stack [0].
Yes, a long time ago [0]. Depending on your needs, stack might still have advantages as the direct tool used by the developer (as it uses cabal underneath anyway).
[0] https://stackoverflow.com/a/51016806/4126514