Is it possible to give users different roles/profiles on different part of the website? For example, is it possible to give userA full read/write access on some part but read-only access on others?

Most importantly, is this possible without too much hassle? I mean what I'm  looking for is some sort of "inheritance", i.e.  if I give userA full read/write access on nodeA, I'd like those exact same rights are granted to userA on every child node of nodeA, recursively.                                             

I've seen Flexi Access but this module does not seem to satisfy my "inheritance" constraint.
A widely accepted solution for this would be using the Organic Groups module.

With this module, you can define different access settings and local roles for a given group type, and for all the nodes associated to it (this would be the "inheritance" you are looking for).

It is not the simplest module to use, though. You can find some "getting started" documentation here: https://www.drupal.org/node/861418