I learned "wait" as a command to mean stay until I (the handler) release you (the dog) to come to me, implying that I will not be next to you. "Stay" is differentiated as do not move until I am next to you and release you, inclusively.

The basis for the differentiation was explained to me as such a "stay" being a more powerful command used in potentially dangerous situations, such as if you, the person, cross the street to get a wayward ball and you do not want the dog to move from where you place him in a "stay" in your yard. 

"Wait" is taught the same way as "stay" except for (1) the hand gesture, and (2) where you are when you release the dog.

The hand gesture for "wait" is to wave an open hand, palm toward the dog, in front of the dog's face or field of vision. The signal for "stay" is just to hold the hand up, palm towards the dog, in the same way people generally gesture "stop." You can either have the arm extended downward with fingertips towards the ground or bend your elbow and hold your hand up.

In the end, I prefer to use "stay" all the time and leave "wait" out of my dogs' vocabulary. For my dogs, "stay" means not to move from where you are until I say, "okay" (my release word), regardless of where I am.

Training "stay" is best started from a sitting or "down" position. Standing stays can be taught, but there is too great a temptation and it is just too easy to move. When the dog is sitting or laying down, he is relaxed, and it would require effort to get up to move.

Take advantage of times your dog is tired to first train the "stay" command. After playing or physical exercise or a the end of a training session is a good way to set up for success.

Once the dog is sitting or "down" and relaxed, say "stay" and offer the hand gesture. Immediately, pending he doesn't jump up right then, say "good stay" and reward. Follow with your release word. Slowly extend out the length of time before you reward. Aim to always reward just before the dog will break the stay.

Do not train more than one thing at a time. Work on length of stay or distractions at any given time. Have the dog successful at both independently before attempting combined. In other words, the dog needs to be able to "stay" through one or two bounces of a ball in front of him and be able to stay for 30 seconds with no distractions before attempting to ask him to "stay" for 30 seconds with a ball bouncing nearby.

In the beginning, have the dog on a leash, but leave it dropped on the floor. Keep your foot nearby, so you can step on the leash to restrain the dog if he does start to move to break the stay. Say "eh eh" as you step on the leash. If the dog has moved to standing, have him "sit" or "down" again, then try "stay" again.

Please note: "sit" and "down" are pretty much prerequisites for "stay."