Hispanic, in the context of the contemporary, educated definition of Hispanic in the USA, means you speak Spanish natively. Any race can be Hispanic.
However, in the technical definition of Hispanic, the word literally means, "from Hispania." Hispania is the Roman name given to the Iberian Peninsula, which consists of mostly Spain and Portugal.
Latino, again, in the American definition, means you are Latin American. Latin America is the countries and territories in the Americas that speak Latin based languages, also known as Romance languages. The three Romance languages spoken officially in Latin America are Portuguese, Spanish, and French. Latino is not a race.
Technically, Latino means Latin. Who are Latin people? Well, I would say that the Ancient Romans were Latin people. Other people would extend that definition to all Romance speaking people. Even in Europe, the term Latino is used by some to refer to Latin Europeans (Spanish, French, Portuguese, Italian, Romanian, etc.), not Latin Americans.
Spanish people are from Spain or of recent heritage from Spain. Real/ethnic/native Spanish people are white Europeans.
No matter how many times ignorant people will tell you... speaking Spanish does not make you Spanish. Being from a Spanish speaking country does not make you Spanish. Being of heritage from a Spanish speaking country does not make you Spanish. And Spanish is NOT a race, nor is it synonymous with Latino or Hispanic.
I am Spanish. I would technically be Hispanic, but I don't identify as such because people in the USA have a wrong perception of what it means to be Hispanic and assume that Hispanics are non-white race, which is not the case. Being Hispanic has nothing to do with race.