I don't know it the compiler like C++ files better than C files but in this case it treats them the same.
It most certainly does not.
Also the code is ANSI C code. That is why I gave it a C extension.
But, you want to call the code from a cpp file. That's what the ino/pde sketch gets converted to.
The C++ compiler, invoked for C++ code (files with .cpp extension) performs name mangling. That is the process that allows C++ to support function overloading. The Print::print() function, for instance, has half a dozen variations, each taking a different argument type. The various argument types are used to create unique function names, so that Print::print(int) and Print::print(double) become two separate functions that are completely unrelated to any class.
The C compiler, invoked for C code (files with .c extension) does not perform name mangling.
As a result, the code generated by the C compiler can not, without some additional statements that are not present in your code, actually be called by a C++ function.
The need to include the Arduino.h file in the MyBlink code was not what I was questioning. Clearly, it IS needed. But, it needs to be included in the MyBlink.h file OR the MyBlink.c(pp) file, not both.