"Good bye", "Bye", "Bye bye"
In general, the "see you ..." variants mean that you plan to meet the person you are talking to again, whereas the "bye" variants tend to imply that you don't plan to see the person again any time soon. So "see you ..." is often appropriate around family, friends, or the office, because you would normally see the other person again soon on some predictable schedule. "Bye ..." variants may be more appropriate when seeing someone off to a journey or in a shop to the cashier that you don't know. A colleague saying "bye" around the office might mean that he is going on vacation or is changing jobs. (The origin of "goodbye" is "God be with you", so arguably the other person ought to be going on a significant journey that you have to wish such support.)
This distinction is probably lost on many people, but I have seen people startled when the wrong variant is used.
As for the "bye" variants, I'd say
- "goodbye": quite formal
- "bye": casual, sometimes nearly meaningless
- "bye bye": more familiar, sometimes sarcastic
As always, however, it also depends on context and taste.
I have noticed that "bye bye" is overused by many non-native speakers - much of my experience is with Italians who may take the repetition as analogous with the familiar but otherwise unremarkable "ciao ciao" (NB that in English, unrepeated "ciao" is used for "goodbye", but not, as in Italian, for "hello"). It is childish and best avoided in most circumstances.