Personally, I have
use warnings FATAL => 'all';
in my production scripts. But I'm kind of a masochist that way. Mind you, near the top level I also run everything in a big eval block (ok, it's actually a small block that calls the main code) so that I can log/trace the errors, too.
What you do depends on your ideology here. Some people prefer to remove strict/warnings so that the code "just works". But I look at as "just works wrong". Sometimes it works right, but that's actually an accident more than by design. If I have a design point where I want no warnings for a piece of code, I create a block for it, and do something like this:
# we actually want to treat undefs as empty strings, just easier tha
# way here.
no warnings 'uninitialized';
... # code that might use undefs legitimately goes here
And thus any warnings that my production code still emits is actually against the design, or at least not yet evaluated, and only an accident would lead to good behaviour if I had them removed.
Your webpage question is already answered correctly: stderr doesn't go back to the web browser, it goes into the error log file of your web server.
Update: bad typo, thanks tye and AnomalousMonk.