It's about your terminal emulator.
Binary files can contain various control codes and escape codes which your terminal emulator may interpret as instructions to do various things like clear the screen (Ctrl-L), sound a bell (Ctrl-G), set the foreground colour to red (Esc[31m), depending on how your terminal emulator is configured (e.g visual "bell" - flash the screen - or audible bell or no bell at all) and what kind of terminal it is trying to emulate (something based on VT100 or ANSI is pretty much the default / "standard" these days...but it's worth remembering that other terminals exist and are still in use that have very different set of control codes that they understand).
These codes are how applications tell your terminal to do these things - and there's no way to distinguish between an app deliberately sending such a command to the terminal and a random binary string that just happens to contain those codes.
BTW, some (most) versions of cat have options like -v (--show-nonprinting is the long-form for that option in GNU cat) to transform control codes into a form that won't be interpreted as instructions by the terminal.
This option is also useful to help humans see that a particular file has certain control characters in it, e.g. carriage return (^M) or tab (^I) or ESC (^[). Transforming the ESC characters also has the effect of preventing vt100/ansi or similar ESC codes from affecting the terminal.
file). You should not be usingcatto look at textfiles for this reason.