This is kind of bootstrapping: some minimal perl is created without Dynaloader module, without PerlIO? and multithreading, and after that this miniperl is used to facilitate entire Perl building process: it runs makedef.pl for example, buildext.pl and other helper scripts to build core extension modules at second, and to build perl.dll at first.
When talking about cross-compilation for WinCE, [miniperl.exe] is built at first, it runs on Windows, and helps in cross-compiling process to build perl running on WinCE.
This is why MSVC++ should also be installed and envidonment variables for local compiling should be in good shape.
Historical note: 5.6.0 version of perl for Win32 did not required building of [miniperl.exe]. Instead, some locally installed perl could be used, and there were HPERL macros to represent Perl running on host.
Building process for 5.8.0 and later include building of [miniperl.exe], just because there were done some changes into perl core so newer building process could be kept in better control.