Oh well, I think you really should read more books, but I was bored and stepped through that line piece by piece, so...
1)
sed 's/[^a-z(_]/ /g'
Replace anything that's not a small letter, left parenthesis or underscore with a blank space
2)
tr ' ' '\012'
Replaces every blank space with a return character
3)
grep '[a-z]'
Only display the lines containing a small letter in them
4)
sed 's/^[(]*/ /'
Inserts a blank space at the beginning of every line, erasing the left parenthesis from the beginning of any lines that might have one
5)
grep '($'
Display only lines that end with a left parenthesis
6)
sort -u
Sort the result of the last command and if one entry is displayed multiple times
7)
tr -d "("
Remove the left parenthesis from the end of the lines that were just sorted
------------------------
If all you're trying to do is display the name of the functions, then you can do something like:
grep '^_.*(.*)' CPROGRAMS.c | awk -F"(" '{print $1}' | sort -u
There's probably an even shorter way, but this is an improvement.