It tells Terser it may assume module semantics — strict mode, and that top-level declarations are not global. That unlocks better compression, but it is wrong for a classic <script>, where a top-level var genuinely does become a global that other scripts may read. Enabling it for non-module code can produce a broken bundle.
Is name mangling safe?
For local variables, yes — Terser only renames bindings whose entire scope it can see. Globals and object properties are left alone by default, because it cannot know whether something outside the file reads them. Code that uses eval() or with() defeats the analysis and should not be mangled.
How much smaller will my code get?
Typically 30–60% before gzip for unminified source, and more for code with long identifiers and many comments. The savings figure above the output reports the exact number for your input.