Is there an extension to allow members voted into certain roles (e.g. director, communication director...)?
I don't believe such an extension exists for CiviCRM.  However, there IS an Election module for Drupal, along with Voting API, which I haven't used.  You could use CiviMember-Role sync to grant a role to members that allows them to vote, satisfying your first question.  

You may be able to use Drupal Rules based on the outcome of the election - it appears Voting API supports this, not sure about Election module.  This would satisfy parts 2 and 3 of your question.