I honestly don't know if there is a 'standard' terminology that suitably differentiates all these concepts. (Example: If I say "ASM" what am I talking about?)
I can give you my definitions, if that helps any.
Machine Code
This is the compiled output of an assembler or compiler.
Assembly
This is the human readable form of machine code. (Or, machine code as we know it.)
I sometimes use the term assembly in place of machine code because it's implied that I'm not going to actually read the machine code, but rather the assembly.
Assembly Language
This refers to a specific machine code language such as x86 assembly.
Assembler
This is a tool like MASM\FASM used for compiling source code into machine code.
Assembler Language
This is the language used by any given assembler.
I view this as being different from assembly language because assemblers can add their own syntactic sugar which does not exist in the underlying assembly language. (High level functions, macros, etc,.)