Your regular expression matches a single character at the beginning of each line. Instead, you need to match any number of upper-case characters till the end of the line (add the $ anchor):
Code:
grep '^[[:upper:]]*$' file1
Edit: the command above matches empty lines, as well. To match only lines containing at least one upper-case character, use the extended regular expression option and the + modifier:
Code:
grep -E '^[[:upper:]]+$' file1