Yes, that's correct, the startup code calls _fpuinit in the library to check for presence of a memory-mapped FPU. If you have removed that call from your own startup code, then its your fault

(there might however be reasons for it, some emulators may not like the bus-error that will result most of the time).
And yes, i would also expect that memory-mapped FPU to be faster than pure software calculation. Otherwise it would not make much sense to develop such a device, or to support it in libraries. But it will still be much slower than a "real" FPU.
As to applications: Texel might be good candidate for it.