Assembly is quite hard but if you know a bit of any programming language and instruction sets used in your hardware (eg. MPU or MCU), you should not have a hard time. There are also free tutorials on the web. For specific applications...
embedded hardware programming.
The answer depends on the field of your interest, if you want to program embedded systems, knowledge of assembly language is advantageous. For Windows based applications such as inventory management, word processors, web based application you need not know assembly language.
Generally no one uses assembly language alone to develop complex software but its used in combination with C & C++. Developers use C & C++ to implement most of the functionality and use assembly language for optimization or critical code (e.g. Interrupt service routines, code with timing/Space constraints etc).