B-frames are a type of partial frame in compressed videos that are generated by referencing data from previous and future frames. While this can dramatically improve the efficiency in terms of compression ratio, they do require additional CPU. We recommend using three B-frames per GOP for devices that support B-frames. For videos that contain animated material, you can safely use a higher number of B-frames per GOP.
Some encoding tools allow you to use adaptive B-frames, meaning the encoder can place B-frames arbitrarily if it determines it will improve visual quality. This might improve quality on devices that support B-frames. Only devices that support H.264 Main profile and above support B-frames.
Many encoding solutions have the option of using pyramidal B-frames, which allow a B-frame to reference another B-frame for visual data. Unfortunately, support for this across devices is not complete and can cause unusual playback anomalies such as looping footage. This type of B-frame is specifically not supported by Apple Inc. HTTP Live Streaming that currently is used by a significant portion of mobile viewers, so it should be avoided, unless you do not want to reach mobile devices.