The flag checking function is a subroutine. If you're familiar with other programming languages they call things like these "functions" or sometimes "methods'.
Anyways, the flag checker function has a parameter which is the flag number. By definition, this parameter would be in r0. So you would just load into r0 your flag's number and then call the flag checker function.
The process of how we're "calling" the subroutine is a little harder to understand. It's a clever trick having to do with manipulation of the Stack. You see, bl is limited to within approximately 20 bytes (I don't recall the exact amount, but around that neighborhood) and obviously the function we're calling is somewhere near the start of the ROM (definitely not 20 bytes), so the only good way to get to it is to use bx. However, bx doesn't have a return, because it doesn't write anything to the lr. So we use this convention of bl to a bx, because bl overwrites the current lr value. So that way once the subroutine we call ends, it will go back to where the lr is pointing. However, it's important to note that bl overwrites lr without preserving it, so to make sure you're not messing anything up, push {lr} before doing any links, unless you know what you're doing :D
To answer your question, you're not loading the flag number into lr, you're going to be loading the flag number into r0, then doing the aforementioned method to link to the flag checker subroutine. That routine would, again by definition, return 0 or 1 in r0. So after your link, you would simply check r0.
Hopefully that made sense, I'm not very good at explaining.