The second part of your question is easy with the File Entity module - it turns file uploads into fieldable entities, so adding your teaser/description field is just like adding a field anywhere else in Drupal (make you sure you read the README file - it's not overly clear at first). The module is also on an unstable release, but Dave Reid is pretty damn awesome so I can't imagine it'll be that way for long :-)
Off the top of my head, I can't think of an answer to the first part though I'm afraid.
EDIT
There's an issue here that has a couple of patches for Core that give you a radio box to either Allow only these file types or Allow everything EXCEPT these file types. I've not tested the patches as I don't really want to patch Core for something that I personally don't need, but definitely give it a read!