BL instruction ARM - How does it work

I am learning ARM Assembly, and I am stuck on something right now. I know about the Link Register, which if I'm not wrong holds the address to return to when a function call completes. So if we have something like that (taken from the ARM documentation):

0 | here 1 | B there 2 | 3 | CMP R1, #0 4 | BEQ anotherfunc 5 | 6 | BL sub+rom ; Call subroutine at computed address. 

So, if we think of the column at the left as addresses of each instruction, then after the B there at address 1, the Link Register holds the value of 1 right? Then the program goes to the method there and then it uses the value of the Link Register to know where to return. If we skip to address 6 now, where I am stuck, we know what BL copies the address of the next instruction into lr (r14, the link register). So now it would copy the address of sub which is a subroutine (what is a subroutine??) + rom (which is a number?) or the address of sub+rom (I don't know what this could be). But in general, when would we need BL? Why do we want it in the example above? Can someone give me an example where we would really need it? Thanks!