sama should be used when you're talking to a customer or someone you have a societal obligation to show respect for.
San is the general one. If you're not sure, use san. It will never be bad to use san.
Kun is for your junior coworkers and little boys.
Chan is for little girls, or girls near or beneath your own age with which you have a close relationship. It sounds cute so you should use it if you want the girl to know you think she's cute in somehow. It doesn't necessarily indicate that you like her.
For me, It's only tricky when to use kun or chan. If you're not sure, just give a try and see what happens. If you use it and they don't like it, they'll tell you. I used to be in a band with a girl in Japan. I felt like it was kinda "workish" and she was younger than me so I called her kun and she immediately told me to stop that. I went back to san because, even though she wanted me to use chan, I just didn't feel like it fit my image of her.
Your Japanese will probably actually like it if you don't use one of these at all. Not using an honorific is called yobisute in Japanese and they rarely get to experience it unless it's someone with which they're quite close to and near in age.. I generally find they like hearing a foreigner say their name without an honorific so that's a safe option too.