Domains allow you to define a new type based on a base type with constraints already in place. So, for instance, if you wanted an email type, you could define it as a text type with a requirement for alpha-numeric, and @ sign, and more alpha-numeric. It, of course, could be more complex than that, but you get the basic idea.
User defined types are types defined from scratch and implemented in C. Only for the serious PostgreSQL hacker who understands the type system well. Defining a type with no operators would be of little use, so the hacker who makes the types makes an operator set to go with it (>, <, =, !=, etc...)
I don't know what a conversion is unless it's a character set conversion, i.e. croatian to english characters or something like that.
Listen / notify are used so that a trigger can be fired at certain events which then notify an outside program. Think of things like an LDAP import that can be notified to run when the database that feeds it changes.