I think the folders are /system and /data but I am not 100% sure.
The important thing to remember is that folder names are different from device to device. But all devices guarantee that apps have access to private storage for only that app, and there is, of course, protected system storage.
Without getting to into detail, each app runs in it its own user process. So the apps each have a folder that is private to them not visible to the user, and not visible to the other apps. (This is /data/data i think). You will sometimes see these folders with adb or a file explorer, and if you have root, a root user can access any app folder.
The rest, and in general, the storage is 'user' or 'unprotected'. This may change in the future. But, by default all apps can read most storage, with the exceptions noted above. The reason your internal storage was named "sdcard" was for backwards compatibility, as some old apps hard-coded the path to files.
Regarding permissions:
There are several ways of describing a permission so maybe it is helpful to put them here.
Android permissions
These are permissions the system uses to grant access to resources and functionality. They are what usually comes to mind when someone thinks 'permissions'. Apps request these in their manifest file. This is read by the Google Play market and show to the user at install time.
Custom permissions
Permissions defined by an app. These are permissions an app uses to protect its own resources from other apps, and to grant limited functionality or resources based on the permissions. For example: I may write an app that helps users download RSS feeds. And I want my app to work with other apps and notification widgets. I could provided a way that other apps request a permission from my app to get the number of new RSS stories in my app's feed, but not
all the RSS.
Code:
com.example.GET_UNREAD_RSS_COUNT
When an app is installed, the system takes note of what was requested (and thus agreed to by the user). When the permission is used, (say an app tries to connect to the internet), the system will either grant access, or throw a security exception This can crash an app unless the developer planned to be denied.
(To be continued: I need to get back to coding but will write more if I can later today )