You would create a table that contains the Scheduled Events.
Each unique event would have its own row in that table.
One of the fields in the table would be a DateTime field specifying when the event should occur.
Another fields in the table would be the user email or phone number of the user.
You would create a Report (Schedule Rule) that fires on a regular schedule.
It might fire once each day at an hour you specify.
It would scan the table and look for events that are due soon.
It would generate an email, SMS, or Notification reminding the user of the upcoming event.
If you need to run the Report more frequently than once a day, then you need to create multiple instances of the Report. For example, it might run every two hours during normal working hours, so you would create four instances of the Report. All instances are identical except they are spaced at 2 hour intervals.