Both BNO055 and BHI160 contain BSX3 Sensor Fusion software, which allows for full 9 degrees of freedom sensor fusion and absolute orientation output. However, these parts differ in a few key areas:
Depending on the requirements, one might choose BNO055 or BHi160 depending on the application. The easiest to use is definitely BNO055, and the fastest to bring up to speed to evaluate. Since the sensor is pre-programmed and executing code from flash, after turn-on, it can stream absolute orientation with only a few I²C commands. This is the best choice if the host is very small or has very limited amount of memory such as an Arduino UNO. Additional advantage of the BNO055 is the very good gyro bias stability due to high performance gyroscope.
On the other hand, if size and/or current consumption is a big issue, then the BHI160 is a better choice. Power consumption is about 10% that of BNO055 in a similar working mode, but the tradeoff is that the firmware needs to be load after each power-on. The typical use-case for BHI160 is when the host is a much larger and faster processor, such as a Raspberry Pi. Depending on the speed of the I²C bus, the boot time may be significantly longer in order to program the firmware, and it requires a driver in the host to issue the right commands. Another advantage of the BHI160 is the availability of a full Android Virtual sensor stack (including gestures, step counter, etc)