Some repeating tasks have to happen on a fixed schedule, e.g. put the trash out every Tuesday night.
But many (most?) of my repeating tasks a) have quite a bit of wiggle room, and b) the scheduling of the next occurrence should be based on when I actually complete the previous occurrence.
So the way that application worked is you'd create tasks and say it could happen as early as this date, it would ideally happen on this date, and it must happen no later than this date. You'd also tell it the ideal time between occurrences. The "priority" of the task would automatically change as you move through that window of dates. When you mark the task as complete, the next earliest/ideal/latest dates would be based on the ideal time between occurrences.
Watering plants is a good example. Let's say I want to water my houseplants every 8 days. I could water them 7 days after I last watered them, but I could also be lazy and wait until 9 or 10 days. If I water on day 10, that doesn't mean I should water again in 6 days (which is what a strict 'repeat every 8 days' task manager would make me do); even though I'm "late" I still want to wait the ideal time until the next occurrence. [I'm just making this up, don't take houseplant care advice from me...although most of my plants live nice long lives.]
tl;dr: The ideal repeating task scheduling should allow for a window of time, not a specific day, in which a task should be completed, and the scheduling of the next window of time should be based on when I actually marked the previous one as complete.