I've done a lot of machine code for the 6502, 68k, and x86, pretty much the mainstream cpu's for the different era.
Back in those days, every cpu cycle counted, but even today it does too, when you're processing large quantities of data. I've written a couple of assembler-compilers. I've written applications completely in assembler, such as a music authoring program with real time wave synthesizing, graphics routines, 3D object editors and renderers, and more.
An interesting combination is Java and assembler. When you want to do high performance graphics in Java, it's possible to call machine code directly from Java. I like using the yasm assembler for that.