To begin with, they're two of the words used to say "boyfriend" and "girlfriend" in Japanese.
- kareshi 彼氏
- kanojo 彼女
But here's where things get complicated. First, kareshi 彼氏 can be abbreviated to kare 彼, still meaning "boyfriend." However, the both the words kare and kanojo have other meanings, that is, "third person pronouns," san'ninshou daimeishi 三人称代名詞:
- kare 彼
- kanojo 彼女
So, to recap: kareshi only means "boyfriend"; kare means both "boyfriend" and "he"; and kanojo means "girlfriend" and "she." The difference between kareshi and kare is that kareshi is not used to say "he."
Mistaking Girlfriend for Her
You might be thinking it's easy to mistake one kanojo for the other kanojo, that is, a random "she" for your one and only (current) "girlfriend," but that actually never happens. Take a look at these phrases:
- ore no kanojo 俺の彼女
- watashi no kare 私の彼
My boyfriend. (ore vs. watashi)
- kanojo ga byouki ni natta 彼女が病気になった
She became sick.
- kare ga doko da? 彼がどこだ？
Where is he?
- fujoshi kanojo 腐女子彼女
My fujoshi girlfriend.
(this is a shoujo manga and apparently the official translation is "My Girlfriend's a Geek." That's so very wrong)
It's very difficult to mistake one for another because that wouldn't even make sense. Nobody says "my girlfriend is going... blah blah blah." If you're already talking about your girlfriend, you'd say "she is going... blah blah blah" in which case even mistaking one for another would be harmless. The same goes for kare.
Girlfriend and Boyfriend in Japanese
It's important to note there are other ways to say "girlfriend" and "boyfriend" in Japanese besides kanojo and kareshi.
Notoriously, booifurendo ボーイフレンド and garufurendo ガルフレンド come from (gairaigo 外来語) the English words "boyfriend" and "girlfriend" and mean the same thing.
If it's about previous romantic interests, the word mae 前 serves as an adjective:
- mae no kareshi 前の彼氏
mae on kare 前の彼
mae kare 前彼
- mae no kanojo 前の彼女