Ask your boss or other developers in the company.
There can be many explanations. The main reason may be that the executable is not intended to be run by the user, but by another application (operating system) that invokes the program.
(Are you sure it is an executable and not a library?)
There are text files and binary (non-text) files. Executable is definitely a binary file (although MCU hex file is a text file). Don't know what is the <binary extension>.
.bin is sometimes a file for the linker. It's the next to the last step to be converted into an executeable, DLL or whatever.
.bin might just be lacking a start address which is the linkers problem. So, it is compiles such a way that key values can be found.
.bin is an extension used for Macbinary, see Binhex4 too. .bin is also used for EEPROM burners. It's not a one size fits all.
Take a look here too: **broken link removed**
Unix/Linux all bets are off. Try the standard executable a.out. No .bin there is there. Executable means that the +x is set with chmod and it could be a shell script or a binary.
".bin" can be anything. It can be a bmp image that is intended to be used by the application only. Games used this naming convention to hide bitmaps from the player, but it did not fool anyone.. this is how the first custom graphic mods were made. Just edit the .bin that contains all the "sprites" or graphics of the game.
Probably a better answer. Although in the context of output from a compiler mine makes sense. If I remember, firmware images for routers, etc. are typically .bin too.