On the Wire-framing, you can see a list of sub-features under 'Accounts' and 'Products'.
Manager and Accountants are the user roles.
I am trying to figure how to reduce mental load by not showing sub-features as default. The sub-features could be collapsed by default. They simple tick the main Feature will apply all the sub-features. If user wish to customize the permission of sub-features then they expand the main feature which then show sub-features list. Or what do you suggest to improve this?
You could use an accordion control to allow expanding the category.
However, I see a couple of problems here:
If some options can be hidden, you need to handle partial selection. Otherwise, the rolled-up view would be misleading if only some of the categories were selected. Partial selection will likely be difficult to implement clearly (and it might be a technical headache, too, if it goes beyond of the capabilities of a standard UI element on your platform).
The hierarchical relationship of the items isn't completely clear. For example, if I only saw the "Products" category, would I realize that "shipping settings" was a product setting? This is not necessarily intuitive. Categorizing stuff can be difficult, and there is not always an obvious organization of all the features. This is not really a problem when all options are shown, but when some information is hidden, you rely on users being able to guess what a subcategory contains.
I would therefore favor not hiding the individual options. In security, clarity and precision are crucial. You need to know exactly what privileges you are giving to exactly what users. I think that makes it worth showing more information on the page, even if it gets a bit cluttered.
One option you may try is to add an "All Features" checkbox. When the checkbox is selected the sub-features are hidden. When the user deselects the checkbox, the sub-features are displayed, and the checkboxes on the feature level are hidden. See mockup bellow :