I don't use Windows, so I can't answer any questions about Windows confuration; sorry.
The easiest way to make the perl script accessible through the web server is by placing it in the cgi-bin directory, but that isn't the only way.
In the case of a CGI::Application, the perl script that lives in cgi-bin is very basic. As an example:
The MyApp.pm file is loaded from @INC, so it can be anywhere in your filesystem that you have set up to store perl modules.
my $app = MyApp->new();
All the parameter reading, dispatching, etc; takes place from that other perl module.
But a perl file stored in /cgi-bin could do all the processing itself, and reply directly.