arquivo binário é praticamente tudo que não é texto simples , que contém dados codificados de qualquer forma diferente da codificação de texto (ASCII, UTF-8 ou qualquer de outras codificações de texto, por exemplo, ISO-8859-2). Um arquivo de texto pode ser um documento em texto plano, como uma história ou uma carta, pode ser um arquivo de configuração ou um arquivo de dados - se você usar um editor de texto simples para abri-lo, o conteúdo poderá ser lido. Um binário é qualquer arquivo que não seja um arquivo de texto (nem "especial" como fifo, diretório, dispositivo etc.)
Isso pode ser uma música mp3. Isso pode ser uma imagem jpg. Isso pode ser um arquivo compactado, ou mesmo um documento de processador de texto - enquanto que para fins práticos é texto, ele é codificado (escrito em disco) como binário. Você precisa de um programa específico para abri-lo, para dar sentido a ele - para um editor de texto, o conteúdo é uma bagunça confusa.
Agora, no Linux, você frequentemente ouvirá "binários" quando se referir a "arquivos binários executáveis" - programas. Isso ocorre porque, enquanto as fontes da maioria dos programas (escritas em linguagens de alto nível) são texto simples, os executáveis compilados são binários. Uma vez que existem alguns formatos compilados (a.out, ELF, bytecode ...) eles são comumente chamados de binários ao invés de enfatizar a estrutura interna que eles têm - do ponto de vista do usuário eles são bonitos a mesma coisa.
Agora, o .exe é apenas outro desses formatos compilados - um comum ao MS Windows. É apenas um tipo de binários, compilados e vinculados à API do Windows.