Well, this is how you use them:
#DEFINE MAX 1
count = MAX;
The C code is then compiled in two steps. First, the preprocessor does a search-and-replace and replaces every instance of "MAX" with "1". Then the code is compiled as normal.
As you've guessed by now, you use constants to represent named constants. Another example would be:
Their usual use is to make code more readable, by giving human-readable labels to machine-readable values.
Now please tell us where you learned about using constants to save RAM. That's not what they're for. The amount they save is absolutely negligible unless you're deploying to an embedded controller, and probably is even then.