Is learning microcontroller programming useful for one who want to specialize in robotics I don't mean platforms like Arduino , Teensy , I mean mcu itself like Arm cortex etc.
I would say yes. At the lowest level in terms of robotic project development, you need to interface with hardware, e.g. sensors, motors, etc. So there's always demand in those area. As of if ARM uCs are worth learning, I would say yes also, since they are the most popular uCs on the market, you can find them on many platforms.
Depending on which area of robotics you would like to specialize in, knowing what assembler is and how it should be used might indirectly help you to write more efficient code. It helps you less in industrial robotics, it helps you more in diy robotics. However, I doubt that you will ever write asm code, but I am sure that a solid understanding of bit and hex representation of variables will help you a lot. Assembler can give you this knowledge at a steep learning curve.
Since I think that general knowledge about assembler helps you, not specifically one complex mcu, I would recommend learning a simpler arhitecture like avr (arduino) at a low level (just to know how assembler works) It offers you a good insight into porgrammjng but you will most probably never write assembly code directly.
Furthermore, I would recommend knowing C/C++ well, since most microcontroller applications are written using these languages.