I think the answers to your questions would really depend on your use case and what you are trying to achieve for your user experience. You present two very viable pathways to divide the content by user role, so either one could work. If it were me, I would ask myself a few questions to decide which path is best:
Is there some content that all users should see for certain content? If so, it might be better to make common pages with differentiated blocks so that you don’t have to maintain shared content in two places
Is the most logical way for different users to access the content the same for each user role? For example, if I am a commercial user, will I look for the content following the same navigational structure as a team user? If not, then it might be better to have differentiated pages to make it easier for each user group to navigate to what they need based on their use case.
As for your second doubt about whether to hide the page overall or the blocks on the pages, for me, that would probably depend on whether you take the page-differentiated or block-differentiated approach for your site structure. If all of the content of a given page is only for a specific user group, then you might as well set the visibility for the entire page (that is both easier for you to maintain and more secure because you don’t have to remember to change the visibility of every block). However, if you are differentiating content within the pages, then you would take the block visibility approach to allow all users to see some content on the page, but have some content only visible to certain users.
Good questions! I imagine others in the community might have additional thoughts as well!
@RafaPG, @Derek has great thoughts above. In my experience one always ends up in an hybrid approach. Having separate paths/pages could work if you really have groups of pages that are only visible to a single group of users. Also page and block level I try to suggest doing both as it helps with an extra level of protection.