That's crazy! Why not one function, an extra argument (or global
variable), and an if or switch at the start of the function?
(There's some context missing here; I didn't write any of the quoted
material.)
The use of the "entry" keyword, assuming the compiler doesn't
duplicate code as described above, allows a small improvement in code
size and speed. You don't have the overhead of passing the extra
argument or of doing a test on entry, and you don't have two copies of
what might be a substantial amount of code. There have been
situations where that might be significant, such as early Fortran
systems, where using Fortran (or any high-level language) was a
sometimes controversial alternative to hand-coded assembly language
(or even machine language).
The functionality that "entry" would provide is something that can be
expressed straightforwardly in assembly language; that's probably why
it was included in Fortran.
The implementation that Martin describes might just have been the
easiest way to implement it, for the purpose of supporting old code
that depended on it (but that, if it's running on modern hardware,
isn't affected by the limitations that existed when it was first
written).
Note, however, that the authors of the C standard apparently agreed
with you (and with me) that it's not worthwhile; the "entry" keyword
was never implemented and did not survive past K&R1.