* WebAssembly is an open standard, unlike Flash
* WebAssembly has multiple compatible open source implementations, unlike Flash (and Java, back in the day)
* WebAssembly is optimized for very fast startup, unlike Java
* WebAssembly is designed to integrate with JavaScript and the web in a proper way, unlike Flash and Java
* WebAssembly is designed to have the same security model as JavaScript and in fact to reuse existing hardened code as much as possible, minimizing the security risk.
Not that WebAssembly is perfect, nothing is, but it's aimed to fix the huge issues that previous related technologies had.
And the use cases are very important: things like games, photo editing, etc., all can benefit from high-speed execution of code on the web. WebAssembly is a response to developer requests.