Example 1
\def\multido@step@d#1#2{%
\dimen@=#1\advance\dimen@#2
\edef#1{\number\dimen@ sp}}%
After #2 there should be \relax. Indeed, if #2 is a register or a parameter such as \z@ or \lineskip, the space provided by the end of line would not be ignored. In this case also % might be used, because the following token is unexpandable (\edef). The token list got from \multido@step@d{\x}{2pt} would be (I denote the space token with •)
\dimen@=\x\advance\dimen@2pt•\edef\x{\number\dimen@ sp}
and the space before \edef would be ignored. But with `\multido@step@d{\x}{\parindent} one would have
\dimen@=\x\advance\dimen@\parindent•\edef\x{\number\dimen@ sp}
and the space token would not be ignored. The fact that it follows a control word is irrelevant: the tokenization phase has already taken place. With \relax after #2 there would be \relax in place of the space token.
Example 2
It's just the same. There should be \relax after #2
Example 3
I'll number lines for clarity.
1 \def\multido@init@r#1#2#3{%
2 \dimen@=#1pt
3 \multido@dimtonum\dimen@#3%
4 \dimen@=#2pt
5 \ifnum\multido@count<\z@\dimen@=-\dimen@\fi
6 \multido@addtostep{\do\multido@step@r{\do#3}{\number\dimen@ sp}}}
7 \def\multido@step@r#1#2{%
8 \dimen@=#1pt\advance\dimen@#2
9 \multido@dimtonum\dimen@#1}
There's no need of terminating lines 2 and 4 with %; actually a % at the end of line 4 would be wrong, because TeX would start expanding \ifnum before having performed the assignment to \dimen@ (probably harmless, in this particular case).
The same problem as before is at line 3: the % is good here, because the following token is \dimen@ that's unexpandable; \relax would have been better.
Line 8 should have \relax at the end, for the same reasons as before; not a %, because an argument #2 such as 2pt would trigger the expansion of \multido@dimtonum before the assignment has been performed.