Isn't the whole point of C to have as minimal abstraction as possible?
Not really, otherwise even the standard library would not exist, and we would manually ask pages to the kernel every time we want memory.
C, as a language, is indeed low level, but that does not mean that programs and libraries shouldn't build abstractions on top of the low level interface.
Not at all. The point of C is to have as much abstraction as possible while still allowing maximal control. And 'as much abstraction as possible' is a matter of historical context, since we learn all the time that there are better ways of doing abstraction than C does.