The way I use it is: I want all traffic going to our public website to be routed via the ASM module, our website is www.mycompany.com. Hence, I put *mycompany* as a Pattern String into the hosts list so any http request including this in the Host is matched and forwarded to the ASM. So Match Only hosts is a way of distinguishing which traffic is put through the ASM, according to the host part of the request.
In regards the "send to pool", we have it set at None, i.e. it uses the pool associated with the VS. But you could, with this setting, override this so it goes to a specific pool so all traffic that doesn't match the hosts list goes to the default pool, but ASM traffic goes to a different one.
As Nathan said, the Host field refers to the HTTP host header as defined in RFC2616 for HTTP 1.1. You can use one or more HTTP classes to select different pools for different classes of HTTP traffic. For example you could have host1.example.com request sent to one ASM policy and a separate pool compared with host2.example.com.
For details on the HTTP class object, you can check these links: