Hi,
There are a lot of resources on this site to learn how to make a feature that plugs into mojoPortal and the mojoPortal source code is the definitive learning tool because you can see how other features are implemented.
We provide some basic role based permissions that allow you to give a role view or edit permissions at the page level and/or at the feature instance level. If you need more granular permissions like roles that can do X and roles that can do Y inside your feature, then you can add feature settings for each permissions and we have a control you can use to choose allowed roles. When developing features you can learn about our installation system and Feature Definition files which is where you declare custom settings for a feature. Here is an example snip of a feature definition file showing use of the AllowedRolesSetting.ascx:
<featureSetting
resourceFile="STSEventCal"
resourceKey="WillPayAllowedRolesSetting"
defaultValue=""
controlType="ISettingControl"
controlSrc="~/Controls/AllowedRolesSetting.ascx"
helpKey="sts-eventcal-AllowedRolesSetting-help"
sortOrder="350"
regexValidationExpression=""
/>
For more information
As far as data access, you can follow examples in mojoportal code or do whatever you want, like use LinqToSql or any approach to data access that you already know.
Hope it helps,
Joe