In the standard there is a notion of "significant prefix length". ie, your symbol names may actually be truncated. In C89 the minimum guaranteed length for exported symbols was 6 (IIRC) which explains why the libc symbols are so terse. Adding underscores would greatly reduce the number of significant characters (of course, all of this is mostly obsolete these days).
Not really. Look at everything in the C standard library: fopen(), strcmp(), malloc(), etc.
yes and c stdlib style naming is mainly considered legacy these days and multi word "variable and function [in] all lowercase, with no underscores" is frowned upon.