I don’t think everyone who writes code needs to know how to write assembly, but I think it’s important to know that it exists and possibly what it looks like. Maybe not while you’re still learning to code, but once you’ve actually started working in the industry it’s a good thing to know, if only because it gives you a bit of context of how computers actually work.
1) No, you only need to know about assembly language if you go for deep microoptimizations.
2) Assembly is vastly more high level than modern hardware, so much that most of those CISC instructors are broken into tens to thousands micro operations.
It's not even close to any kind of machine architecture course.
You will need that kind of deep knowledge to write optimal compilers which probably take (extended) C and not assembly language.
Assembly (well, machine code if you want to nitpick) is still the representation of a program right at the interface between software and hardware. It's the processor's native API, no matter how many layers of additional abstraction behind that API. So it's a pretty important level of abstraction if you want to have a reasonable high-level idea of how a computer works.