Branchinstructions

B : Branch

B<suffix> <address>

B is the simplest branch. Upon encountering a B instruction, the ARM
processor will jump immediately to the address given, and resume execution from there.
Note that the actual value stored in the branch instruction is an offset from the current value
of R15; rather than an absolute address.

It isn't a very good example, but you can imagine how it would be better to execute conditionally
instead of branching. On the other hand, if you have large sections of code there or if your
code uses the status flags, you can implement all sorts of branching using conditional execution:
Thus the single simple branch instruction can replace all of those branch and jump instructions
present in other processors.

BL : Branch with Link

BL<suffix> <address>

BL is another branch instruction. This time, register 14 is loaded with the contents
of R15 just before the branch. You can reload R14 into R15 to return to the instruction after the
branch - a primitive but powerful implementation of a subroutine.
This effect is quite well shown up in the screen loader 2 (example 4)...