http://spanish.about.com/od/idiomsandphrases/qt/hace_ago.htm that should help explain it. It's an idiom so it doesn't make literal sense.
This is the 3rd person singular of the verb 'hacer', used impersonally (like 'hace calor') to mean 'it is' or 'it's been'. From Collins: C VERBO IMPERSONAL
1(con expresiones de tiempo atmosférico) to be hace calor/frío it's hot/cold ...
2(con expresiones temporales) hace tres años que se fue he left three years ago, it's three years since he left hace tres años que no lo veo I haven't seen him for three years, it's three years since I (last) saw him ...
"Hace casi veinte años" in this sentence you are talking about the past, or something that happened in the past. "Hace" means "ago" ,"casi" means "almost" so the correct translation would be "Almost twenty years ago" because hace is acting like the verb in this sentence veinte años is only following hace casi
Why could the answer not be be "it makes almost twenty years"? Sorry if this is wrong place to post but I'm really puzzled. Also, I can't scroll down on discussion pages until after I "follow" discussions with a post. So sometimes these type of questions have already been answered. Is this just a technical problem on my computer?
Because either there is some subtle difference in the meaning or it is not in the database for accepted answers. If you sat there and thought up every possible combination of how you could say the same thing there would likely be many more answers that have been missed. If you think it should be right then report it. Otherwise just learn the translation as they expect it.
In use, they are practically the same. The nuance is that "almost" suggests something like "not quite" while "nearly" suggests "close to" or "approaching." It's the same thought, but "almost" is defined in the negative and "nearly" in the positive. Honestly, these words are so close in meaning that I've never had the opportunity to think about the distinction.