If you are careful when you program (assertions, tests, logging) you rarely need to use a debugger. Time spend on a debugger is invisible and lost. It is much better to spend time adding assertions, levels of logging, and writing tests.
Debuggers can be I instrumented to do a lot of dev-only logging for you.
I do write tests and assertions, but if those fail, I am dropped into a debugger (if prog is executed interactively), I can immediately inspect the state of my program and more often than not fix the problem on the fly.
I strive to not manage state but to write purely functional code, it makes life so much easier - see your second point as an example :)
Everyone debugs the software they are building or working on.
Not everyone uses a debugger (depends on language, framework, etc).
IMHO debugging is best done through 1) proper logging 2) metrics 3) proper isolation and software architecture 4) crash early philosophy
Of course I can be wrong and write bullshit. But why egoistic?