Is the question a misunderstanding of interpolation? The solutions have a high order interpolation generated as part of the solving process (which is usually order matching or one order less), so you don’t lose accuracy by interpolating between steps. Thus you only need 1e-12 tolerances if you want a 1e-12 local tolerance on the interpolation (in some sense that is more rigorous in some methods than others) which amounts to about a 1e-10 global error (heuristically). tl;dr, the tolerances apply to the saveat points just as much as it does to the steps.
You can use saveat for getting values at desired time points. Or tstops to control time stops, though that should only be done really for discontinuity handling.
See the output control part of the documentation for more details.