I don't know of any such program or site, sorry.
As for how kanji work *takes deep breath*...
There are two types of readings for kanji, on (音) and kun (訓). On readings (音読み or 音読) are transliterations of the old Chinese readings, while kun readings (訓読み or 訓読) are the native Japanese words. On readings are mostly used when kanji are written in combinations, like the word 勉強 (study); kun readings are used when kanji stand alone (most of the time), or when they are followed by okurigana (送り仮名), or hiragana that serve to inflect to show different grammatical functions. An example of kun reading would be the word 強い (strong).
First, let's deal with on readings. The first kanji of the aforementioned word 勉強, 勉 (exertion), has an on reading of ベン, and a kun reading of つと.める.* It also has the nanori (名乗り) readings (readings recognized for names) of ひこ and やつ. The second kanji, 強 (strong), has on readings キョウ and ゴウ, and kun readings つよ.い, つよ.まる, つよ.める, し.いる, and こわ.い, and nanori reading すね. Since these two kanji are used in combination, we use the on readings -- ベン and キョウ, which gives us the reading べんきょう for this word.**
Now let's look at kun readings. If a kanji has okurigana, or it stands alone (as was said before), it is generally read with its kun reading. For example, let's take the above kanji 強. If you see 強い, then you know to read it as つよい. An example of a stand-alone kanji word would be 音 (sound), which would be read with its kun reading, おと. Note that some words of this type, like 本 (book), are read with on readings (in this case ホン).
There are also what are called jukujikun (熟字訓), which indicate meaning only, and reading is ignored, and ateji (当て字), which indicate reading only, and meaning is ignored. One example of jukujikun is the word 大人, which character for character means "big, person," but the word means "adult." It is read as おとな, and ignores the readings (one would expect だいじん or だいにん). An example of ateji would be 寿司, which is read すし, and the kanji don't really mean anything; they are just there to represent sound. I think that the first type is more common, because the second type is probably being phased out, with such words just being written in kana.
Finally (I think), note that some kanji change meaning with reading. For example, the kanji 生 means "life" when read as セイ or ショウ, but if it is read なま, then it means "raw." Also, as seen in the above example, 強 has okurigana い, まる, and める, which all have different grammatical functions. The word 強い is an adjective, and means "strong." The word 強まる is an intransitive verb, and means "strengthen/get strong," and the word 強める is a transitive verb that means "strengthen/make strong."
*The little dots between the hiragana mark where the kanji reading stops and the okurigana reading starts. Also, readings given in katakana are on, and hiragana are kun. If the readings are given in romaji, then capital letters mean on, and lowercase mean kun.
**The first readings of a certain type are generally the most frequently used, so in the case of 強, キョウ is a more common reading that ゴウ. With this knowlege you can guess more accurately which reading to use.