Will try to see if I can get these right. Please feel free to correct me:
Latin - anything / anyone relating to Latin language (ex: Italy, Spain, Portugal, Latin America)
Latino - same as above but is referring to a person.
American(o) - A citizen of the USA, technically speaking. This refers to a person's nationality (not ethnicity or race).
However, in common daily usage, this is (incorrectly) referred to as someone who is a US citizen of European descent.
Hispanic - referring to a person from a Spanish speaking culture.
The one difference between Hispanic and Latino is that Hispanic refers only to people from Spanish speaking countries/cultures, whereas Latino also includes people from Portuguese speaking countries.