Of course, the context is enough to tell the difference most of the time, but not all the time.
And yes, there is a difference in pronunciation between apparent homophones like kiru "to cut" and kiru "to wear" : the difference is in accent. Japanese has a pitch accent (different from English accent which is a stress accent) : there is a difference of height ("tone") between the syllables of a word.
For example kiru "to cut" is pronounced with a high-low melody (HL, fall of the pitch after the first syllable, between ki- and -ru) while kiru "to wear" is pronounced low-high (LH).
For each word in Japanese, the accent pattern is fixed. What matters is whether there is a pitch fall or not, and if yes where. Some dictionnaries and textbooks give the accent patterns : the so-called unaccented words have no pitch fall and a LH(...H) pattern (first syllable low, all the following high), others have a basic pattern of (L)H(...L) (first syllable low, all following high until the pitch fall, and then all low, or first syllable high if immediately followed by a pitch fall)