let x1 = e1 and x2 = e2 and ... and xn = en in body
Has the effect that the x1,x2,..,xn are bound "simultaneously" in body, and not before. Unlike what "let x1 = e1 in let x2 = e2 in ..." does, x1 is not visible in e2, etc. This is rarely useful when programming, but extremely useful when meta-programming, as it allows you to evaluate several different pieces of code in the same scope independently, without risk of variable shadowing.
For the record I don't find your feature suggestion particularly tempting. Mutual recursion is more expressive than single-recursion, and I'm not sure what would be the point of allowing the former and restricting the latter -- the horse is already out of the barn. Instead of
let rec fac = function
| 0 -> 1
| n -> n * fac (n - 1)
I can write
let rec fac = function
| 0 -> 1
| n -> n * f (n - 1)
and f n = fac n
turning any self-recursion into mutual-recursion.
I'm not sure I understand your point about accidental value recursion. Do you have an example?
Note that it is possible to use recursive modules as a way to have recursion between phrases (structure items) without explicitly using "rec". It's a bad idea in most situations, because using recursive modules makes you rely on more complex (and accordinly more fragile) features of the language.