This program illustrates the difference between private and shared variables. A shared variable can be accessed by more the one sprite, while a private one can be accessed by only one. Shared variables are used to, as you've guessed, share information between sprites or coordinate their operation. The next several projects give examples of these uses.
Here's some things you can try 1. Run program and click on butterfly and then crab, then butterfly, etc. 2. Watch to see what the variable called "the best" is set to after each click. 3. now create a new variable for the butterfly sprite and be sure to select "for this sprite only". Call your new variable called "what I am thinking". You just created a private variable. 4. change the set statement for this sprite to set your new variable rather than the shared one. The result of this change is that, when the butterfly is clicked, it will change the value of its own private variable. 5. run the program and click on the crab sprite. Observe that the variable is "the best" is set to "is me CRAB" 6. now click on the butterfly. Hmm. The variable "the best" was not updated. Why? See #4 above. 7. switch to crab's script. Can you change it to set the variable you just added in step 4? The answer is "no". Why?