(In Rust, we've had this new target for a while, and it's where we're putting in all of our development efforts. We still technically support the emscripten target as well.)
A libc can be useful inside of wasm for existing C or C++ code (or whatever) that is built for another platform, so that you can more easily compile to wasm as well. But it's an option, not required.
I'm not sure the primary appeal of wasm is treating it as a low level target (even if that is possible and sometimes useful).
But be prepared to work without libc if you don't use emscripten. Writing a malloc is fun though!
It's funny how technology go in waves. This reminds me more of programming microcontrollers than writing Web stuff, and yet this is the hot new thing!
Both of those would include input and I think audio is dealt with in a similar way.