Why is "remove whitespace between tags" off by default?
Because it can silently change your page. In HTML, the whitespace between two inline elements is a rendered space: <b>a</b> <b>b</b> displays as "a b", and removing that space displays "ab". The option is available for markup that is entirely block-level, where it is safe and saves more bytes.
Which regions are protected?
The contents of <pre>, <textarea>, <script>, <style> and CDATA sections are extracted before minification and restored afterwards byte-for-byte, because whitespace inside them is significant.
Are conditional comments preserved?
Yes. Comments matching the downlevel-revealed pattern (<!--[if ...]> and <![endif]-->) carry logic rather than documentation, so they survive even with comment stripping enabled.