Inventory can be:
- a grid where player can position items in empty cells, like in Diablo 1 or 2
- one ore more simple list(s) of items, with an eventually limited number of slots, like Pokemon's backpack
- items have weight, and the inventory is limited to a certain weight, like in Baldur's Gate
Functional character attributes = characterization attributes (stats: DEX, STR, INT, ... skills that change unfrequently, a class system pushes players to specialize) + status attributes (XP, different classes can have different amount of XP required per level (e.g. Baldur's Gate), but players should know it when they pick their character).
Instead of having levels giving sudden bonus, we could have no levels and stats would increase directly proportionally to the XP. After all, levels harm immersion. However, levels add achievement goals and let players spend regularly newly-acquired points in skills they choose.
Spells can cost mana/SP, or they could just disappear from caster's memory until she sleeps (a la Baldur's Gate/DnD). Unpracticed skills could gradually decline in efficiency, while frequently used skills could get "mastery" bonuses (like for WoW's crafting skills). Or the opposite: frequently used skills could eventually wear out of power.
Skills can be learned right away when levelling up, or when a skill point is spent in them, or the skill could be obtained from an NPC ("training" with masters), or from other players/NPC by watching them do the skill (e.g. the creature in Black and White learns spells after they have been performed a few times in front of it).
If a character has 10% chance to unlock a door independently of the previous tries, then the player will try until the lock eventually opens. Then the 10% chance only slows down and annoys the player. Instead, the better at unlocking doors the character is, the faster the door will be opened. If the lock is too complicated for the character's unlocking skills, then the door unlocking progression bar simply does not increase.
Stories and quests
If the overall story is "save the world", then give meaningful reasons why the character would be ready to do side-quests like delivery boy. Good example: helping a hermit to find his lost dog because the collar hides a key to an important door that the player needs to take. Bad example: helping a hermit simply to get XP, or just to help him out by pure generosity (but really, players are not solving NPC problems by pure generosity).
Anyway, stop writing stories about saving the world.