ㆁ and ㅇ were originally two different jamo. From Hunminjeongeum:
ㆁ,牙音,如業字初發聲 (ㆁ, "molar sound"/velar consonant, pronounced like the initial of 業)
ㅇ,喉音,如欲字初發聲 (ㅇ, "throat sound"/dorsal consonant, pronounced like the initial of 欲)
Hangul was not originally created just for the Korean language of the 15th century; it was also created to transcribe Chinese sounds regardless of whether they have existed in Korean back then. However, 'Chinese sounds' was not any particular Chinese topolect of the middle ages, but rather pronunciation glosses from fanqie dictionaries, and these dictionaries were written as a deliberate effort to consolidate pronunciation divergences between the varieties of Chinese.
As a consequence, Hangul was consciously designed to be morphophonemic with regards to the Chinese fanqie system. This is particularly important with respect to imported Chinese vocabulary, as it means that a hangul block which represented 業 started off with ㆁ rather than ㅇ, even though
- ㆁ represents the velar nasal /ŋ/;
- all Chinese characters (including 業) which were rimed with /ŋ/ initial have lost this initial in Korean upon importation.
This means that 業 is not pronounced with initial /ŋ/ in Korean, but rather silence or a glottal stop /ʔ/.
Since the null consonant ㅇ never occurs as a final, there was almost no chance of confusing the phonetic value of ㅇ and ㆁ in written Hangul, and thus standardisation efforts in the late 19th to early 20th centuries have merged the two.