I can see a lot of really good answers have already been posted, but I have just a couple of things to add from my observations. Bear in mind that I am not a native speaker of Spanish.
TL;DR
Bonita: Generic, all-purpose term for "pretty" (and sometimes "beautiful"). As a case in point, the film Pretty Woman was translated into Spanish as Mujer bonita. Though there are many types of beauty, this word appears to be referring to a woman's outward appearance, especially if she is thin and graceful. The word itself is actually a diminutive of "buena."
Linda: I see this translated a lot as "cute," sometimes "pretty." Seems to be a word chosen for women who are thin, have a nice, clean look about them, and tend to have delicate features.
Hermosa: Comes from the Latin word formosus which means "beautiful," "handsome." This word is often used to describe things other than people, such as beaches, views, fountains, and waterfalls, which makes sense because one of its meanings is also "peaceful," and "serene." When it is used to describe a woman, however, it looks as if it might sometimes be used for those who have not just an outward beauty, but an inner beauty as well. It also appears that this word is used to describe all sorts of women and not just those who are model thin.
Guapa: Typically just translated as "good-looking," but I sense there's more to it than that. I can't be absolutely certain about this, but it looks as if this word is used, a lot of times (when it is paired with "chica"), to describe someone who is a bit more curvy, voluptuous, and/or sultry than most or perhaps one who, compared to others, is less serious, more fun, and likes to have a good time. When it is paired with "mujer," on the other hand, I get the impression that its meaning leans a bit more toward "handsome" as in a "handsome woman." (I later searched for "handsome woman" on Reverso and was pleasantly surprised that my observations from a Google image search corresponded with its translations — "mujer guapa" is the first translation listed.) As with "bonita" and "linda," this appears to be a word that describes a woman's outward appearance. This is not the word you would choose, for example, to describe a woman's "beautiful mind."
Bella: I tend to agree with Keila Perez Oliveras on this one (i.e., it's the highest compliment to any woman), but it is also used to describe a lot of things other than a woman (e.g., words, cities, images, ...). It comes from the Latin bellus, which means "beautiful," "pretty," "handsome." The classic fairy tale Sleeping Beauty has been translated into Spanish as La bella durmiente and the animated film Beauty and the Beast as La bella y la bestia. Reserve this one for the best of the best.
Note: As I mentioned, I'm not a native speaker of Spanish so the conclusions I came to above were not made lightly, nor did they come easily. They are the synthesis of examining a lot of different material. Ordinarily, I make my readers work for their TL;DR by at least having to scroll through what I've written, but it was moved to the top by fedorqui, one of Spanish Language StackExchange's moderators, and one of its best contributors, so if you like your TL;DR up front, consider yourself lucky. Even so, I encourage you to read the rest of the article. It might take you half an hour to read, but there's lots of bolding, links, images, and sections to help you skim it faster or bypass any section that doesn't interest you. A lot of time and effort went into it, but I don't want you to read it because of that. I want you to read it because I think you'll enjoy it and learn something in the process.
One of my teachers: 12 Corazones
I'm going to start off by commenting on some observations I've made from a guilty pleasure of mine — a television game show called 12 Corazones. It's a good show for a student of Spanish to watch because it tends to repeat some of the same words over and over and context is sometimes enriched via the action seen on the screen (rather than just words on a page). It applies to your question because it is basically a dating game show where contestants use words like these to describe one another. I was reminded of it by the time I got to the end of this thread because I suddenly realized that it provides some great insight into what words people (especially those under 30) tend to use to describe the opposite sex in a romantic/dating context. I haven't watched every single show, but I've watched quite a few and based on the episodes I've seen, I haven't noticed "bonito/-a," "hermoso/-a," or "bello/-a" used a lot. Lately, I've noticed the word "lindo/-a" used quite a bit and the definition provided by skan —
Beautiful face and body. It refers to a thin woman with graceful movements.
definitely seems quite fitting, but I think it means something more like "cute" when applied to a male. While you can translate "lindo/-a" as "pretty" as in "vestido lindo" or "chica linda," and you can even do the same for males as in "chico lindo," a "pretty boy," in some circles it can convey a pejorative meaning that doesn't exist with "pretty girl." See some definitions here if you aren't sure about what I'm referring to. Suffice it to say, I don't think "lindo," as used on 12 Corazones, is well translated as "pretty boy." The word "cute" seems to be more fitting.
Having said that, I know that one of the best ways to translate "How cute!" is "¡Qué lindo!" (but it clearly is not restricted to just that meaning). Look at these images to see it being used as "cute."
When a single word has such a range of meaning — from "a thin woman with graceful movements" to "cute" — it is difficult to get a grasp on when and how it should be used. Further complicating the usage of this word is the fact that its origins aren't certain. If etymology interests you, Wiktionary provides some interesting details for "lindo," one of which is that the word may derive from Old Spanish for "authentic," "pure," "good." This meshes with how I've seen the word used on 12 Corazones — more cute, nice girl from a good family rather than sultry, tawdry bad girl with a scandalous past. A visit to educalingo will give you more interesting details about this word (which may be more commonly used in the Southern Cone (esp., Argentina and Paraguay) than Spain. It even includes a short paragraph on "Lindo" one of the sons of the Greek god Helios, which you can also find here. You might want to reserve this word for females, however. Educalingo mentions that the word "lindo" is also the word for an effeminate man who takes care of his appearance too much. As has been mentioned before, "pretty boy" may be a good translation of "chico lindo." Now that I think about it, in addition to "cute," this meaning also seems to mesh with the usage I've seen of it on 12 Corazones.
Another word I often hear contestants use on 12 Corazones, but one not on your list or in this thread (yet) is "atractivo," which I think is a very useful all-purpose kind of word that can be applied to many different types of people. These images give you some good examples of males who fit this description and these are good examples of females who do.
Despite the fact that I hear "atractivo" a lot on the show, it doesn't necessarily mean that it is used more than other words. And the words used on the show aren't necessarily the ones audience members would use (even though I'm sure they understand them). To test this theory out, I took the words you asked about (plus "atractivo/-a") and did a Google search of videos with them and this dating game show — 12 Corazones. Findings from the returns of such a search are likely to be comments made about the show. What I found was rather interesting, so I put it together in a chart for you:

I was really surprised to see "bella" at the top of the chart, but it makes sense for the fact that the show is produced in the United States, is based off of a show in Argentina, and most of its contestants come from Latin America, not Spain. (See the answers from Joze and skan for why I found it surprising that "bella" would be so high on the list.) There may be other reasons why "bella" resulted in so many hits (e.g., personal names of those uploading the video or those contributing comments), but even when I adjusted the search to eliminate some of that, it didn't seem to make a difference. In other words, I believe I was just as likely to find a return for someone named Bella as I was for someone who decided to use that word to describe a person, especially if a video had more than a thousand comments. I was also surprised to see "guapo" so middle of the pack, but after reading through this thread, the fact that "guapa" is just fourth from the bottom now makes a lot of sense. (See Joze's comment on "guapa.")
I did not take a look at every comment made, but below are a few. In case you don't know, the letter "q" is text shorthand for "que." I left the comments as is (to include punctuation and capitalization) with the exception of an ellipsis (to indicate a partial omission of the comment) and bolding of text.
"Penelope Menchaca bella como siempre" -
"Tan bella q era Tauro" -
"q linda es Carmen" -
"Tauro hace linda pareja con ese" -
"La de rosa es la mas Hermosa" -
"la niña de rojo está bien bonita" -
"… son muy bonitas parejas no" -
"q eran bonitos son súper feos" -
"Si estos son guapos, entonces yo soy millonaria" -
"Muy guapo es el de capricornio muy guapo papasote" -
"los 4 son lindos" and ...
"Geminis está muuuy guapo"
If you want to see this one for yourself, click here. I don’t think this particular episode was too racy and it had more of a multicultural angle to it than most in that the contestants were from all corners of the world.
I should also add that using "está" instead of "es" to describe a person's looks indicates that you find him/her especially so — more so than usual. How you could say that about a stranger on television, I don't know, but the last comment listed appears to have been made by a native Spanish speaker. I suppose it's possible they know each other personally. Even so, you typically want to use these types of descriptors with some form of "ser," not "estar."
Actors and Actresses: Pretty Boys and Pretty Girls
Later I decided to run an experiment similar to the one just described, randomly selecting some famous people known for their good looks. This time the only filter selected was one for language — Spanish. Those results follow:


As you can see, the results for the two male actors I selected are the same in terms of the relative frequency of these words as found on pages with their name. Even so, when I took a closer look at the numbers, I realized that there was a significantly greater proportion of pages with "bonito" + "Ryan Gosling" (89%) than there were for "bonito" and "Gael Garcia Bernal" (65%), making me think that there might be more of a tendency to refer to Gosling as a "pretty boy" than there is for Bernal.
After reading one of the answers in this thread, I was thinking that "bonito/-a" may not be such a good word to use to describe the appearance of a person, but if these search results are any indicator, it looks as if it might be more commonly used than some might think, at least on a global scale. Likewise for "bella." After going back and reading through the comments, however, I was still a bit skeptical about these findings, so I took a closer look at some of the pages. Granted "bonito/-a" is not always describing a person on these pages, but there were some instances of it in which it was describing a person, and I didn't have to scrape the bottom of the barrel to find them. Here are a couple:
"Ryan Gosling: 10 cintas que demuestran que es más que un niño bonito"
— De10.com.mx
"Uno de sus primeros papeles como secundario fue Remember the Titans, pero después se hizo famoso por The Notebook, aunque supo deshacerse de la imagen de niño bonito para ser uno de los mejores actores de su generación."
— "Ryan Gosling sus MEJORES películas," Cine PREMIERE
Despite that, I have to admit that for most instances I saw of "bonito," it was describing anything but a person. Apart from "niño bonito," I saw "bonito" describe everything from dresses and suits to messages, tributes, and Valentines, and for some of the examples I saw, better translated as "beautiful" rather than "pretty." Still a bit shaky on whether I might be able to use this word to describe a man, I decided to look it up on www.deChile.net, as well as educalingo. The website deChile.net provides a fairly lengthy entry for "bonito," initially mentioning that it means "beautiful and graceful," before going into great detail about its other meaning as a type of fish. Educalingo lists "bonito" as skipjack tuna, but also includes the collocation "niño bonito" and lists two translations of it — "golden boy" and "wonder boy," along with some good sentence examples. It provides some other collocations with this word that you may want to be aware of, too, so it is definitely worth checking out.
As for "bonita," based off of Joze's comments about it, I would imagine I'd find far more instances of it describing a person (of female gender), than I did with "bonito."
You'll notice that the results differ a bit more for the two actresses. Relatively speaking, "guapa" is more likely to be found on pages with "Scarlett Johansson" than is "linda" (7% vs. 6%) whereas "linda" is more likely to be found on pages with "Penelope Cruz" than is "guapa" (9% vs. 1%). Keep in mind that this was not an exact science. I did not inspect each page to see whether or not these words were describing the actress or something else altogether, but even so, I think this provides some insight into word choice.
I also wondered whether or not the fact that Cruz is from Spain made any difference, so I did another experiment using an actress originally from Mexico — Salma Hayek. For her, there was more of an even spread between "bonita," "bella," and "linda," but, as with Cruz, "guapa" was far less likely to be found on pages with her name than "linda" (9% vs. 18%).
Just to calibrate this pseudo-experiment even further, I ran these searches with Emma Stone. Interestingly enough, "hermosa" was more likely to appear on pages with her name on them than either "linda" or "bonita"; similar to Cruz and Hayek, "linda" was twice as likely to appear as "guapa." As unscientific as this research is, I'd be inclined to say that Johansson might be considered someone who fits more into the "guapa" category and the others more into the "linda" category.
I also took a closer look at the word "bella" and how it was used. It checked out just fine as an acceptable word to describe a beautiful woman, but it is also used to describe other things (such as "a beautiful love story," "a beautiful thing"). A couple of examples where it is used to describe a woman:
"Johansson es la mujer más bella del mundo y lo mostró en esta alfombra roja"
— Noticias24
"Penélope Cruz más bella que nunca en el lente de Karl Lagerfeld"
— SDPnoticias.com
Both of these last two examples correspond well with the definition of "bella" Keila Perez Oliveras gave:
... the highest compliment to any woman.
Advice on how to understand these words better
I hope everyone's comments here help you to better understand the differences between these words. I know I now have a better understanding myself. Even so, it is important to be observant of regional differences. I think Mackie Messer had some good advice with:
Just listen to the people around you. Then try some words and observe the reactions.
If you don't live in a Spanish-speaking country or live near native Spanish speakers, expose yourself to the language as much as possible with as many different types of communication mediums as you can — news and magazine articles (Cosmo in Spanish might give you some insight into how these words are used and then some!), books, film and television, are all very good for increasing the depth and breadth of your vocabulary and putting things into a context that you can learn from and apply later.
12 Corazones is a good example. You can find some episodes online, but don't judge it from those alone because I don't think the best of the best is out there. If you are at all curious, you can watch a full episode of one of the more memorable ones here. It was quite a show. (It was published by a channel called Telemundo English, but the show is in Spanish with English subtitles (not autogenerated ones).
You can even use YARN to get a better feel for Spanish words and the context in which they are sometimes used. Its database doesn't have a lot of Spanish language videos yet, but it does have some, and you'll also see that some Spanish words are used in programs intended for an English-speaking audience. Here's a clip I put together of some of the words examined in this thread:
lindo-hermosa-bonita-bonito-guapa-guapo
It may even help for you to do the same with their English counterparts. Sometimes, I think a lack of a full grasp of a word's meaning in one's own native language can impede one's ability to understand why one word may be a better translation of it than another. In other words, if you don't make fine distinctions between words such as beautiful, cute, pretty, good-looking, gorgeous, attractive, et cetera, in your own language, it isn't likely you'll be able to do it with ease in a foreign language. Knowing one's own language really well will help you make similar distinctions in a foreign language and improve your communication skills by enabling you to use precisely the words that convey what you want to say. It may help you to create one of these for yourself, but here's a collection of clips with the English counterparts to the Spanish words you inquired about (plus "attractive" and "gorgeous," both synonyms of "beautiful"):
pretty - cute - beautiful - good-looking - attractive - gorgeous
Don't forget to think about conversation partners as well. It is fairly easy nowadays to find native speakers willing to converse in Spanish and lots of resources out there to help you get started.
And if that isn't enough, I highly recommend creating your own personal Spanish reference library and one that includes a good collocation database. I recently found this one:
Spanish Collocations
and immediately thought Where have you been all my life? because it is precisely the type of thing I've been needing. I hope it helps you and anyone else who happens to stumble upon this thread. As an example of what it can do for you, click on the following:
hermoso
bello
In case you can't access those pages, I'll provide a few examples of the information you can glean from it:
hermoso/-a
"hermosa mujer" is a much more common pairing than "hermoso hombre"
"hermoso rostro" is a much more common pairing than "hermosa cara"
"muchacha hermosa" is a much more common pairing than "muchacho hermoso"
bello/-a
"bella mujer" is a much more common pairing than "bello hombre"
"bella hija" is a much more common pairing than "bello hijo"
"chica bella" is a much more common pairing than "chico bello"
You get the idea. As with any database, the corpus that comprises it may or may not be reflective of your circle or region (or register), but the collocation database I've used for this post looks as if it's a pretty good one. You can always check what you find with it against another source (e.g., Google's Ngram Viewer or even just a Google search).
After returning to this thread over and over again, I suddenly realized something. One of the reasons it may be difficult to keep these Spanish synonyms straight is because there exists a mix of fluidity and rigidity in their English counterparts. To use a well known object of beauty, I'll apply this to the Mona Lisa. Many might describe her as beautiful, or handsome, and maybe even gorgeous, but I don't think many would describe her as cute or pretty. To use the Grand Canyon as another example, you could call it beautiful, gorgeous, and even pretty, but you wouldn't call it cute or good looking. So this led me to studying these words just a bit further. The first thing I wanted to do was start off with the Spanish Royal Academy's [Real Academia Española (RAE)] definition, but just focusing on the first definition listed for each word. Joze has all of them included above, but here are my translations, aided by Reverso and Google Translate to ensure I was interpreting each of them correctly:

Next, I took a closer look at some of the collocations using the collocation database I mentioned earlier:
Collocations appearing more than once on the chart have been marked with a color. Find its matching color for other instances of it. The number in parentheses behind each collocation is the number of hits the collocation returned from the database.
Then I reread the details you included with your question and I'm glad you added them because while I tend to agree with you that "beautiful" is more of a compliment than "pretty," I realized that I personally rarely use "pretty" as an adjective at all. I tend to use it almost exclusively as an adverb as in "pretty much." But that's just me and my small circle. If this is any representation, the word "pretty" is just as likely to be used as an adjective as it is to be used as an adverb, even though, overall, it is less commonly used than "beautiful." The word "pretty" reminds me of this song from West Side Story and this scene from The Wizard of Oz, so maybe that has something to do with it. More likely, though, is simply that the people I surround myself with and the things I listen to or watch on television tend not to use the word. Be that as it may, I, like you, had to really think about which Spanish word (that has been examined in this thread), would I use for any given situation. Before doing so, I wanted to make sure I was limiting my study to just those collocations that were most frequent. After doing that, I went searching for images, using both Spanish and English, to come up with images that matched my notion of each collocation and created the chart you see below with what I found:
As you can see, this list only includes the feminine forms. There's a reason for that. The collocation database I used did not show significant numbers of hits for anything but "hombre guapo" (19) and "hombre hermoso" (9). Neither did I find significant hits for "niña hermosa" or "niña guapa." I don't doubt that these pairings exist, but just not in significant numbers in this database. I know for a fact that a Google search will return several pages of "niña guapa," for instance.
I should also add that just because a particular word doesn't have a solid collocation, it doesn't mean that the object in question isn't well described by it. For example, in English, "hot boy" is not a collocation and just sounds rather off to a native speaker, but you could say, "The boy is hot," and it would sound perfectly fine and would most likely mean that the male child in question either has a fever or has somehow exerted himself to a noticeable degree. The slang/colloquial meaning of the word "hot," could be another meaning where "boy" refers to a young man and not a little boy and "hot" means "extremely attractive in a sexy kind of way."
All of that aside, I found it difficult to find images for these collocations that would be considered an unquestionable representation of each. In the end, I had to live with the fact that, despite the definitions provided for each, in terms of actual usage, their meanings are a bit subjective. In other words, what one person considers beautiful may not be considered beautiful by another. For a comedic example that touches on this subject, see this here.
Also, I could have been a bit more multicultural with my selections, but I was concerned that doing so might complicate the effort to show the finer distinctions between these collocations.
Further complicating my efforts was the restriction I imposed on myself to only collect images marked as "labeled for noncommercial reuse" (with the exception of maybe one or two, which were collected via other legitimate means).
I also need to add that many of the collocations for "chica" and "mujer" had significant hits even in reverse order, but for the sake of space and time, I only included the pairing with the most hits. For example, in the chart you will see "hermosa mujer," but not "mujer hermosa" even though it also received a significant number of hits (110). None of the others had as high of a frequency, but I thought it was important to let you know that. In Spanish, usually when a word pairing reverses the traditional noun-adjective order, the speaker is emphasizing the adjective. Sometimes reversing the order of noun-adjective can change the meaning altogether, but that's a topic for a completely different thread and shouldn't be a concern for the word pairings presented here. If the topic interests you, you can probably find a lot of information out there on the web, but at some point you may want to read the Spanish StackExchange thread titled, "Significance of adjective placement."