The capitalization makes no difference, however the back-ticks ( ` ` ) do. SQL is smart enough most of the time to recognize the name of something in the database, like a table or column name. However, you can mess it up if you have spaces in your names, or if you use reserved words in SQL, such as "select" or "order". Many people simply put back-ticks around every name they put in their queries so they won't have to think about whether their names are going to mess-up the query.
About the special characters, I really don't know since I have had no reason to use them before. Try putting back-ticks around any name that uses them, and see if that allows it to accept them. I think those are included in the ASCII standard, so I don't know why it wouldn't accept them considering that ASCII is about the most restrictive character set in use anywhere today.
Yeah, I probably should have mentioned the other two. He is correct, and I guess I didn't spell it out clearly: You don't add the back-ticks around everything (even though I think legally you can). They go around the names of fields and tables.
Since I'm portuguese, and portuguese is a hard language, if I try portuguese words like "usuário" (username) it gives error :p but no problem at all, i'll just make it english xD
Too bad about the Portuguese characters, though. I think a lot of developers end up using English words in databases and other places. Although it strikes me as odd a database engine can't even support basic Extended ASCII