A C runtime is often provided by the same project as the C standard library (the other viable option is to have it provided by the compiler project).
Not all. Typically stdarg.h is not. On Linux, <sys/*> is not.
The presence in your binary only means that crt0.o was statically linked (may be an expectation of the loader on your system). If you linked against a static libc, you would also see those symbols as part of the binary.
I'm pretty sure it works that way on windows too, but they call the symbol mainCRTStartup or some such.
The point I am making is that crt0.o usually comes from libc, even if it is linked separately.
I suspect that the loader expects the ELF entry point to be an address in the application, not a dynamically linked library, which is why crt0.o must be statically linked.