We do a similar thing to this in our Skuid app. In essence, we have a related list (Skuid table) of contacts and a checkbox custom field on the contact object called Send Email. The user ticks that field for each relevant contact and clicks save on the table. We then have a workflow rule that fires whenever a contact is saved with Send Email set to true. Workflow then sends the email and resets the Send Email field to false. It works well for our scenario, which is simple in that we’re sending the same email template every time.