"To lack" and "to have not" mean the same thing in this context and are completely interchangeable. They are the same in most other contexts, actually.
To answer your second question, in both examples I would add the article: "He lacks the courage to do it" and "He doesn't have the courage to do it". Because you're talking about a *specific* type of courage ("the courage _to do it_"), you should use "the". In this expression, the "the" means something like "enough":
"He doesn't have the courage to do it" = "He doesn't have enough courage to do it."
If you're just saying that someone generally is a coward all the time, you should say "He lacks courage" or "He doesn't have courage". Both mean "He is a coward" or "He is meek" permanently.
Hope that makes sense! :)