BPT allows you to give sampling priority to materials which take longer to converge. As you have probably experienced, some more complex shaders (SSS, translucency, rough gloss, etc.) often create much more noise in a render and thus require more sampling than materials such as diffuse or a sharp gloss.
(If you are unclear on the technical meaning of samples, check out this post.)
BPT lets you adjust the relative amount of samples for each type of shader individually to manually optimize your rendertimes. So if you are getting a lot of noise in your scene from a particular SSS shader but your diffuse surfaces look fine, you can knock up the SSS samples to reduce the noise from the SSS without having to waste samples on the diffuse surfaces that don't need any more sampling.
Keep in mind that when used, BPT does seem to take a little bit longer and generate a little bit more noise than standard path tracing. So it is best used in situations where the difference in noise created by different shaders is quite large so the gains are large enough to outweigh the higher base values for noise and rendertime.
This is a more practical explanation of how to use BPT, if you want a more technical explanation check out this post