You can't achieve all of this functionality in core.
Core is a wallet. Not a hot-/cold- wallet seperation and deposit software.
You'll need to build your software around utilizing core's RPC's.
1. Create bitcoin address which forwards 30% send to it to hot wallet, other 70% to cold wallet.
Simply check the received amount and either (1) instantly create a new transaction (not recommended) or (2) batch transactions until you have X, then split them as you wish using
sendmany.
2. Send bitcoins from wallet(hotwallet) to other users.
A simple RPC call to generate a transaction is enough here.
3. When user paid to address created, send notification to callback_handler.
You need to use
walletnotify (if you only care about the first confirmation) and/or
blocknotify (if you want to track the amount of confirmations).
There isn't too much work needed to achieve that. Most commands are self-explanatory and/or are very well documented.