Hi,
1. Yes you can use it on object level. When I used it in my object I wanted exception to be captured and passed to user so I just logged/added it into collection
2. Conditional wait is not mandatory but it is a good practice to use it in order to prevent exceptions in case no error occurs but bot just has not waited enough for the page to be loaded. Conditional is better than unconditional as it decreases time of waiting
3. Not 100% sure what you mean in 3. But if you refer to creating new exception type you can use any case, it is up to you