Second, the point of "let it crash" is not that you can then login to the running VM, but rather that your GenServers, etc. would be part of a "supervision tree", i.e. your processes would be monitored by a Supervisor which would have a "restart strategy" that you wrote to deal with crashed processes. So, you can write code using the "happy path" in cases where you expect things to usually work and, if there's an error, you can let the process crash because it'll get restarted, in a matter of microseconds, by its Supervisor.
It's almost a cliche to hear stories about people running Erlang or Elixir who didn't realize they had a bug in their system for months until they happened to look at the logs and see notifications of a supervised-process getting restarted often.
(And, btw, in cases where you might expect to have lots of potential errors, e.g. from getting data from an external API, you can use exception).
[0] https://elixirforum.com/t/jose-valim-elixir-is-officially-a-...
[1] https://www.irif.fr/_media/users/gduboc/elixir-types.pdf
[2] https://fly.io/phoenix-files/adding-dialyzer-without-the-pai...