How do triggers and check constraints relate to maitaining database rules
You haven't specified a tag in your question so I'll assume that you're asking a generic question despite the SQLite reference (if you're asking a SQLite-specific question, please update your tags).

Generally, I'd suggest using a trigger when you can't use a check constraint.  Different database engines have different levels of support for what you can do in a check constraint.  I don't know of any database engine, for example, that would currently allow you to define a check constraint that references data in a different table or data in a different row of the same table.  

If your database engine allows you to define the email format rule in a check constraint, I would use a check constraint.  If your email validation rules were more complex, however, or you were going to have the same validation rules in many places, you may want to encapsulate them in a function.  Once you do that, most database engines are going to require you to use a trigger.  For example, you might want to perform more detailed validations that involve checking to see if the domain is valid, whether the email domain on the row in the leads table was not already in the customer table, etc.  At that point, you're doing something more complicated than what a check constraint can manage.