In most contexts, or as a broad generalization, the difference can be thought to be:
concatenate
Append or tag at the end in the order.
AA,BB -> AABB
Generally used with reference to two members; can be more.
merge
Combine together, with no regard to order/ position.
AA,BB,CC,DD -> could be (AACCBBDD / BBAADDCC /...)
Generally used with reference more than two members.
join
Place side by side/ end to end, with no regard to order/ position.
AA,BB -> could be (AABB / BBAA)
Can be thought of as concatenate without the order constraint.
Generally used with reference to two members; can be more.
The exact definitions do vary depending on the context (the field of application: math/ programming/ other) as @Peter Shor already stated above. However, as you seem to be only interested in the differences in a lexical sense/ context, the above may be of some help.