Your approach will work, but you can also use the values selected in the check box field to pull up a found set of records in table A. If you did that, there's a "multiple emails, one for each record in found set" option that you can also use.
Whith either approach, this relationship could be used:
Table B::Person = Table A::Name
This calculation would produce your list of email addresses with "," as the delimitter:
Substitute ( List ( Table A::Email ) ; ¶ ; ", " )
This script step would produce a found set in Table A of the speified names in Table B:
Go To Related Record [Show only related records; From table: Table A; Using layout: "Table a" (Table A)]
You may, however, want to completely rethink your interface for selecting email recipients. The above relationship is based on a person's name. Names are not unique--so this fails if you try to select John Smith and have two people named John Smith. People also change there names. Thus, you may want to figure out a different set up where you can use names to look up people, but to using a relationship based on a serial number field added to Table A.