I absolutely despise make and think it's ridiculous that a tool that can't handle spaces vs tabs is so "mainstream".
It differentiates between TABs and Spaces because each one signifies a different thing to follow: Lines starting with TAB indicate that a _recipe_ follows (which is shell syntax), and lines NOT starting with TAB indicate that a _rule_ follows (ie., native Makefile grammar/syntax).
Hate it or not, it's been a reliable workhorse for decades.
That said, the description above is accurate, but still describes an almost immediately regrettable mistake[0]. Many are used to it now, and the semantics are “fact” now, but could still have been avoided.