The URI gets compared to the strings you specify, and if it matches, the request gets sent to specified pool. If it doesn't match any of them it falls through to the pool specified in the default clause.
The if/elseif/else option will be less efficient than a switch statment--particularly since you're setting the Host header value to lower case again for each conditional check. But yes, that would function.
I'd rather not change our existing rules without having time to test them.
One last question. If I make a request to www.domain.com/images that will be looking for the /images subfolder on the images.domain.com pool, correct? Or can I point /images to the root folder. So if someone requested /images/banners/mybanner.jpg it would look for /banners/mybanner.jpg on the destination pool.
I don't know that it would matter if it was before or after the pool statement since the string inspection has already been done. Note that I changed the string inspection line to use HTTP::uri where you had HTTP::host.