To answer the "correct and completely interchangeable" part of your question, no, not completely.
- 저는 친구들과 연락을 해요 = I keep in touch with my friends.
- 저는 친구들에게 연락을 해요 = I get in touch with my friends (i.e. contact them).
The two phrases are used interchangeably in many cases, but their main point is a little different. 와/과 연락해요 sounds like two way interaction while 에게 fits one way communication better (might be a small difference but it often matters). So if you're notifying your friend about something, you should use 에게 (e.g. 친구한테/에게 올 필요(가) 없다고 연락했다 / 말했다. 친구와 is strange). Likewise, if you're contacting the police, you don't say 경찰과 연락했다 but must say 경찰에 연락했다 (use 에 instead of 한테/에게 if the recipient is an organization). 경찰과 연락했다 is not completely wrong but it is a much poorer choice.
- 나는 친구들을 도와줬어요 = I helped my friends.
- 나는 친구들에게 도와줬어요 (X). This is wrong.
도와주다 is a transitive verb taking a direct object. You can sometimes omit the object but cannot use 에게 in place of 을/를. It sounds strange.
You can correlate the usage with English.
- 친구를 돕다 / 도와주다 = help a friend.
- 친구에게 돕다 / 도와주다 (X) = help to a friend (X)
- 친구에게 도움을 주다 (O) = provide/give help to a friend (O).
- 동생이 숙제하는 것을 도와주다 = help my brother with his home work. (the structures don't match up in this case)
#3 uses 에게 because the verb is now 주다 which commonly takes P-에게 N-을 주다 (give N to P). 도와주다 is closer to 돕다 in meaning and grammar, so it can't conjugate like 주다.