1) Kotlin just shipped an experimental wasm compiler with 1.7.0 that is not actively marketed at this point but starting to work. They are depending on a few feature flags in chrome to turn on experimental garbage collection and a few other things. Jetbrains decided a while ago to build on and wait for the standardized wasm functionality for memory management and garbage collection instead of shipping their own version of that (like blazor does). My guess is that once this stabilizes, a lot of other languages will start targeting wasm more actively.
2) Actually, wasm is showing up in a lot of js/ts applications as an optimization. Mostly developers don't even notice their npms are pulling in some wasm. For example react does this apparently. What is native is a pretty fuzzy notion these days. A lot of mobile apps are hybrids that lean heavily on embedded browser components.
3) IO gets done by the browser via native libraries. The Javascript facade for this is pretty narrow (browser fetch API basically). If you are manipulating lot of data (e.g. graphics) in binary form, having some native code with actual types is helpful.