Think in terms of lines of code. To me small means < 10,000 lines of code. Medium means 10,000 to 500,000 lines of code. Large means 500,000 to 2,000,000 lines of code. And huge is anything bigger than large.
Be very, very aware that the size of a particular project can vary a lot depending on the language chosen. For instance a 200,000 line Perl project generally has the functionality of a 1,200,000 line C project. (This is from the estimate in Code Complete that Perl usually takes 1/6 as many lines to do the same task as C.) However as you get into different size ranges, you get different issues that involve major organizational differences. Specifically
- Small - reasonable size for one person to produce in a reasonable time.
- Medium - reasonable size for a small team (max 8, beyond that size you start getting into communication issues that drop productivity and require reorganization to handle) to develop and entirely understand.
- Large - You've been forced to have a large team (significantly > 20 - note that the average team of 20 is about as productive as a team of 5-8 due to organizational issues).
- Huge - Your project is large enough that you probably need to use specialized tools just to help people navigate the project to figure out what they need to understand to work on X.
Note, other than a year spent at Google, I have mostly worked on teams working on small-medium projects. Therefore I'm mostly guessing on where the cutoff between large and huge is. But Google definitely was huge.