蕾 is an everyday word for "bud" while 花芽(kaga) is a very obscure term that is hardly ever used outside of specialized contexts such as botany and horticulture (I won’t go into the details because others have already nailed this meaning). But you might occasionally find 花芽 used in poems, lyrics, and even on certain types of blogs where they might wax lyrical about the beauty of flower buds. In such cases, more often than not, it's meant to be ateji and should be pronounced tsubomi, exactly the same as 蕾.

So the question is, what's the difference between the two? The short answer: they are one and the same thing. Since they are read exactly the same way, they are nothing more than two different renditions of one word. But exactly why do some people choose to use ateji? Well, it's the visuals. 花, for the obvious reasons, conjures up in the mind of the reader an image of 花(flower) and 芽 (sprout). Also, the reduced stroke count give the word a cuter and less intimidating look. So it does *feel* a bit different and some people might write tsubomi as花芽 to get that feel. It sure is fun, but I might add that experts on writing often say this kind of ateji should be used sparingly