"Mindestens" and "zumindest" have similar meanings but are applied slightly differently in usage.
"Mindestens" is usually used to indicate a lower limit or minimum value. For example, "I need to sleep at least five hours to feel rested." Here, "mindestens" means that five hours is the absolute minimum number of hours needed.
"zumindest", on the other hand, is usually used to indicate a lower limit, but it can also have an implicit meaning of "more than". For example, "I slept at least five hours." Here, "zumindest" means that five hours is the minimum, but it is also possible that the actual sleep duration was higher.
In summary, "mindestens" indicates a clear lower limit or minimum, while "zumindest" indicates a lower limit but also leaves open the possibility that it could be more.