I don't really understand the differences between 합니다, 말합니다 and 대화합니다. Can someone explain please?
하다 is do. just do. its a really really really broad very simple verb.
말하다 there is probably a dozen different ways to use it, sometimes it will be translated to "say" or "speak" or "tell" or "talk" depending on how, but its always the simple act of conveying words.
대화하다 is specifically "to converse"
This is the second version I see/hear from the word "speak", why is the same word written/said different?
There is no "it". So you have hit on the difference, "say" is a transitive verb and requires an object.
"say" is not the same as "talk" in English either. "say" would not work for this sentence, since it requires an object.
If there is a consonant before ㅎ, it will either become silent or aspirated. When ㄹㄴㅁㅅ meet ㅎ, the sound ㅎ will be silent and the consonants will be taking over; when ㅂㅈㄷㄱ meet ㅎ, the sound ㅎ will disappear and the consonants will be aspirated to ㅍㅊㅌㅋ respectively.