When monitoring incoming transactions for a web wallet, should I check for confirmations on a timer, e.g. every minute? Or should I check once every block by using blocknotify?
Every 30-60 seconds should be sufficient, but if you have access to a service that will notify you when blocks are found, that would be the fastest. A confirmation is just a block being found. Once the transaction is included in a block, that's its first confirmation (and it is no longer unconfirmed). Every block that stems from that block afterward is another confirmation.
This is a nice chart on the average transaction confirmation time: https://blockchain.info/charts/avg-confirmation-time that will give you a better estimation on how often you should check.
Also related: What keeps the average block time at 10 minutes?
It depends how quickly you would like to notify the customer of their payment being accepted. When I make a deposit/payment, I would like to see it as soon as possible. I always get that uneasy feeling during the time between when I send coins and when I see it confirm in my account.
If I were you I would say every minute is acceptable (and easy to set up a cron for), I would notify when the payment has been seen (rawmempool), and when it has been confirmed the required amount of times to send or spend.