Semitic languages work with consonantal roots which can be modified and conjugated using vowel patterns and affixes. See the Wikipedia article on Semitic roots.
To take your root אהב or ʔhb as an example:
The present tense of the basic stem (if you are not yet familiar with stems/binyanim, you can ignore it for the moment) is ʔohev 'he loves'. Here the pattern is CōCēC, where C represents consonants of the roots. There are no affixes here, but the feminine singular is ʔohev-et 'she loves', so there you have one. (That the b of the root changes to v is due to a phonological process, irrelevant for our purposes here.)
The noun ʔahav-a is also built on the same root, but with a different vowel pattern and a feminine singular ending.
Conjugation and declension is done only through affixes. Any changes to the vowel pattern are due to phonological processes. The verbal stem and tense is indicated by the vowel pattern, but sometimes also by a prefix. This is for example the case for the nif'al stem (prefix ni-). In that case the prefix of the verbal stem and tense is closest to the root.
In the old, (pre-)Biblical, writing system, the vowel o would not be written in ʔohev, since this system was strictly consonantal. That strict system might have been less confusing to you that way. However, note that such a system is highly ambiguous. Thus we would have מלך mlk for both mālaḵ 'he reigned' and meleḵ 'king'. See this post for a brief overview of the place of vowels in the ancient Hebrew writing system. Modern Hebrew is normally written without vowel points (except for children books and poetry), but uses a lot of vowel letters: consonants that are used to indicate vowels, like ו in אוהב, which also has the consonantal value v.