> why is _ allowed only in math mode?
Because it has different meaning in different context. It's a nice shorthand for subscript in math mode and you still need it as an underscore when you write code or normal text.
> Why can't macros have numbers in their names?
I give you that. That's due to underlying lack of proper programming language.
> Why does a simple thing like bolding text require a \textbf?
What else do you want there? The markdowns * has famously bitten me multiple times when it interfered with my multiplication in math (math + mathjax). Or when the bold needs to cover a full paragraph. I don't have a better suggestion. I'll be happy to hear another one.