It looks for zero or more consonants (`[^aieou]*`) followed by 5 to 7 vowels (`([aieou]){5,7}`) followed by zero or more consonants (`[^aieou]*`). The entire regular expression is anchored to the beginning of the line (`^`) and the ending, (`$`).
### Example
$ egrep '^([^aieou]*[aieou]){5,7}[^aieou]*$' \
/usr/share/dict/words | head -10
abacinate
abacination
abacterial
abaisance
abalation
abalienate
abalienated
abalienating
abalienation
abandonable
### Details
So when it matches say this first word, `abacinate`, the first letter a has 0 consonants to the left, so we match that part.
As additional vowels with either zero or more consonants are found on the left and/or right, we match those situations too. If we find 5 to 7 of them, then we match.