Since JSON is a text format that can be quite verbose, BSON was developed as a binary representation of JSON documents. BSON not only supports the well-known data structures (arrays and name/value pairs) but also has extensions like a Date type.
If you look for generic binary formats that allow to store data structures you may also be interested in Google protocol buffers or Apache Thrift. Both are supported by many programming languages and encode/decode data structures in a very compact form. Opposed to BSON these formats are more driven by a schema describing the structure and its contents.