How to get a list of post types that “support” various things such as page-attributes?

Yes, this can be done. Here’s how:

get_post_types( array('supports' => array('page-attributes')), 'names', 'OR');

This Trac ticket provides some explanation as to why that last parameter—the ‘OR’—is necessary: http://core.trac.wordpress.org/ticket/17620