Thanks, this clarifies things for me.
There's DROP ROLE IF EXISTS, which I'm using.
2012/6/22 Tom Lane 
<tgl@sss.pgh.pa.us> Roles are not considered to be part of an extension: they really can't
 be, since an extension is local to a database while a role is global to
 the whole installation.  As per the documentation, you're allowed to do
 CREATE ROLE in an extension script but it won't be managed by the
 extension mechanism.
 Not sure about a better solution to your problem offhand.  It might be
 sane for the script to do CREATE ROLE IF NOT EXISTS, if we had that,
 which we do not :-(
-- 
Victor Y. Yegorov