How does one go about staking and unstaking their EOS? What if a user has more than one dApp - is it necessary to stake on a dApp basis? And if that’s true, resources used are computed on a dApp basis rather than for a high level account as a whole?
Technically users and dApps are synonymous as far a resource allocation is concerned, similar to Ethereum, where it doesn't matter if the address is a contract or a person, as long as it pays for it's gas.
In this video Dan explains the process for resource allocation.
Essentially, bandwidth and CPU are staked for 3 days using a staking contract that will be provided by block.one (for both smart contracts and users), and RAM is allocated and paid for in real-time (during this process either the sender or receiver can be charged for this).