The difference is one in meaning. Hay is used to refer to mere existence, while está or están is used to describe location.
As an example, look at the following simple sentence: "There is a book." The English is ambiguous. The sentence could be phrased as "a book is there," meaning that a book is in a certain location. Or could be interpreted as "a book exists." In Spanish a different verb would be used in each instance.
To say that the book is in a location, use a form of estar:
- El libro está allí. (The book is there.)
- Hay un libro. (A book exists.)
- No hay dinero. (There isn't any money, because it doesn't exist.) El dinero no está. (The money exists, but it's not here.)
- No hay profesor. (There's no teacher, meaning, for instance, that one hasn't been hired.) El profesor no está. (There's a teacher, but the teacher isn't here.)
- Hay dos escuelas. (There are two schools, that is, two schools exist.) Dos escuelas están allí. (There are two schools, meaning, two schools are in the direction that is being pointed to.)
- Hay vacas en Argentina. (There are cows in Argentina.) Las vacas están en Argentina. (The specific cows are there, in Argentina.)
- Hay muchos problemas. (There are many problems.)
- No hay felicidad sin amor. (There is no happiness without love.)