Team owner is charged. Members of the "team" plan are free. Team owner sends invite to potential team member. Member gets the invitation email and clicks a link which takes them to a register page. Once they are signed up they are now a member of the team they were invited to and don't have to pay. If that person already has an account associated with the email address the invitation was sent to, they are just added to the team and don't have to create a new account.
You can also limit the number of possible team members by using Spark::teamPlan->maxTeamMembers(10); in your plan definition. The "members" include the owner so if you want a team to have an owner and 5 members, you'd define 6. Then you can offer different team plans with 5 members ,10 members, 50 members, etc.
Depending on your app, you may want it so team members can't create additional teams (without paying for a team plan). You'd do that by adding noAdditionalTeams to the spark booted method:
Spark::useStripe()->noAdditionalTeams();