For decades, the internet has run on three elements for developers- Javascript, HTML, and CSS. All fo the functionality for websites and applications, though, has come purely through Javascript. Now, however, WebAssembly allows you to create web apps in other languages- like Rust, Go, C++, and Python, and to deliver those browser-based apps to the end user. So you would write the app/game in whatever language you want (Go, Unity, whatever) and it will compile to WebAssembly for browser-based delivery. You use WASM on the frontend, in between your server and the frontend UI.
Write code in Go/Rust -> compile down to WASM binary locally -> fetch binary in frontend HTML or React
If you're programming in Javascript or Typescript, you're used to using only one type for an integer (Number()), and you don't even have to specify the data type in Javascript. This is not the case in WebAssembly, where you specify the data type and expected byte size.
AssemblyScript Types: the data types in AssemblyScript
WebAssembly Types: the data types in WebAssembly, for the most part these overlap with AssemblyScript
To further expand, WebAssembly lets you manipulate data at a byte level, meaning your web apps can actually become more performant, much like games. In fact, you can run video games through the WASM engine and render them on the browser. As a web developer, it become immediately obvious that this will become standardized practice for future large-scale applications.
Frontend code (React) -> WASP -> server code (Node)
With the new update coming (never?), the EVM will receive an update that will allow developers to create smart contracts out of any language that is compatible with WASM, This will be a huge innovation in the space, as the main onboarding from web2 will just be understanding how blockchains work without having to learn a new framework.