As for the difference between bono and boneco, here's an explanation I wrote earlier:
(note: this only applies to adjective words! Such as bona -> bono)
"Bono" is the abstract concept of "good". As in "to choose between good and evil" (elekti inter bono kaj malbono) or "her actions bring good into the world" (ŝiaj agoj portas bonon en la mondon). In both of these "good" is a independent entity. A thing in and of itself.
By contrast, "boneco" is the goodness of something or someone. (-eco meaning the quality of property of something/someone). As in "the goodness of my heart" (la boneco de mia koro) or "vegetables have natural goodness" (legomoj havas naturan bonecon). In both of these "goodness" is not a thing in and of itself, but a quality of something else. (Of the heart and the vegetables, in these cases.)
Similarly, "ruĝeco" is "redness" (red as a property of something else) and "ruĝo" is "red" (the name of the color. Red as an independent entity). So with adjectives, adding -eco is often more or less the same as adding -ness in English. (boneco = goodness, ruĝeco = redness, moleco = softness, etc.)
Although as I said, this particular distinction only works when the word root used is originally an adjective. ("bona" in this case) For example, friendship is "amikeco", but friendship as an independent entity is not "amiko" of course.
And it should be noted that even then there are enough cases when people use the -eco word, even when the -o word would theoretically be more logical. (For example "juno" is barely used for "youth". People tend say "juneco" in all cases.) So don't see it as a very strict rule.
More details on the EC suffix here in PMEG (in Esperanto)
If "la bono" means "the good" then 'la malbono" would be the opposite. The meaning is always clear in context. In my own usage, the one time I'll use a different word would be to describe a witch or something. "Malbona sorcxistino" cold mean "a bad (incompetent) witch". I'll say "mava sorcxistino" in this case -- for "wicked witch." In every other case, I'd say "malbono."
Cxu mallerta kuracisto estas bona kuracisto?
At the end of The Wizard of Oz, Dorothy tells Oscar Diggs that he's a bad man. He replies that he's a good man, but admits that he's a bad wizard. Bad has two different meanings here and there's no reason you can't do the same thing in Esperanto with "malbona."