The external company will first need to have access granted by an owner company admin before they can use Teamwork Chat. To grant access select the settings cog in Teamwork Chat, select external companies and click the toggle to enable access. Once enabled everyone in the external company will be sent an email. 

A user in the owner company can write directly to someone in an external company, the user in the external company can then write directly to them forever.
Once someone in the owner company adds a user from an external company to a conversation, they can send messages in that conversation forever. You can however remove the user or delete the conversation. 

Users in the external company cannot write to anyone initially. They cannot see members of their own company in the people view in the sidebar. Once someone in the owner company adds them to a conversation, they can then send messages in that conversation.

If as an owner company user you want to create an @all conversation, including users from an external company you need to write @all followed by an @mention for each user in the external company. You would need to write @all @jen (where @jen is from an external company).