> If you don't need inter-process communications, you don't need ROS.
All I'm saying is, there are cases when you do need IPC, but you can do it without ROS... Surely it brings major benefits wrt. code reuse, but it can also be quite intimidating for a newcomer. I guess the best way of mastering it would be working on an existing project and having some experienced user walk you through it.
Caveat: ROS is for research into robotics systems and algorithms. You can pick up your fav language, write something up, and use a thin IPC library (pub / sub) to tie it into the ecosystem.
Otherwise, it quickly becomes impossible to share portable modules and code libraries (all written in different languages, mind you). The alternative: Sticking to their language and compiling in their library or dealing with their dependency chain ... is much worse.