When you activate the Rules Scheduler module (ships with Rules), you get a new action for each rule set, which allows you to schedule the rule set execution. This allows you to schedule everything, by moving it into a rule set and scheduling the execution of this set.
When you want to have something scheduled repeatedly, just schedule the rule set again from inside the scheduled rule set.
When the rule set gets scheduled by the action, the passed arguments are packed and saved to the database, so for content or users only their ID is stored. When the rule set is to be executed, the packed arguments are loaded from the database and get unpacked. This means that content or users are loaded fresh from the database. Note that if one of these arguments doesn't exist any more, the rule set is not executed.