Depending on the encoding, you might get larger
char sizes (8 bits->16 bits), though UTF-8 is able to handle a Unicode character with the same size as a standard ASCII character. Bytes are encoded and decoded in Unicode (while ASCII isn't, as it has a 1-to-1 relation with the byte value), giving a minor performance penalty. Different Unicode encodings exist, such as UTF-8 (8 bits), UTF-16 (16 bits) and UTF-32 (32 bit, I have never seen this one in use though).
You get advantages, more characters. This is needed if you want to internationalize your program to a bunch of different lamguages because they may use different characters than the English alphabet does. The little possible space and performance gain is seldom worth sticking to ASCII in case your language has built in support for Unicode.
Some software might have a trouble with Unicode, but that is far from a problem today.
Unicode is a superset of ASCII, you won't lose characters, only gain. As you have more characters, you will also have to handle more of them. Say you have a method for converting a string to lowercase, you will have to handle many more different characters if you used Unicode instead of ASCII.