Are these settings really complied into the executable?
On Windows, they aren't, because on Windows, it's possible for an executable to find out where its file lives. Perl uses that capability of Windows to populate its @INC.
Are these hidden paths part of what makes compliling Perl modules painful in windows? (testing with Glib and GTK indicate yes!)
These are the same hidden paths that make compiling libraries painful everywhere. You need to set up $ENV{INCLUDE} and $ENV{LIB} correctly. For Strawberry 5.10.0, I attach the path.cmd file I use to set up the environment for it below.
I think I've made a flash drive with a portable Perl installation
...which totally subverts a Windows PC's own Perl installation...
Which is how I manage the various versions of Perl I have on various machines too. Every Perl directory has a path.cmd which sets up the environment so that perl.exe is the "correct" Perl for that application and all other tools are also the correct versions. I use
different versions of Perl for historical reasons, mostly because the applications using it Just Work and I don't want to invest the time to consolidate them all to a single Perl.
set BASE=%~dp0
path %BASE%perl\bin;%BASE%c\bin;%PATH%
set INCLUDE=%BASE%c\include;%INCLUDE%
set LIB=%BASE%c\lib;%LIB%