The hierarchy starts with the base theme. Then the theme inherits it. Finally, all layers extends the theme class. Ignore the naming because this works by generating an in-memory hierarchy of classes that make all the layers that seem to be at the same level, into a single level of a long hierarchy.
Strictly answering your questions:
1. This is just OOP, so if a class overrides a method without calling the parent method, then the parent is not called. Same happens here. However, because of the long layer hierarchy, if you don't call the parent method in a hierarchy, you will be breaking a call chain for that method and the ones that are below the hierarchy will be called and the ones above will not. So if developing a theme, it would be relatively safe to override parent method. But when it comes to layers, it wouldn't.
2. Same story: a theme with N layers. They can all call the same method as long as the layers call the parent method.
You also asked about the reason why PHP is not generating duplicated classes errors. That's because the in-memory classes have an incremental number added to them. I made a PR long ago to change this behavior but it wasn't merged.