How numeric and categorical values are treated depends on the actual machine learning algorithm within Weka that you're using. Some aren't able to handle both classes of attributes and if you select such an algorithm with the wrong attribute type, Weka will tell you.
In general you should declare the attributes as what they really are, i.e. if a value is numeric, declare it as numberic even if there're only a few different actual values. Likewise, if the attribute is categorical, declare it as such even if there're many different values.
Regarding your last question, I don't think Weka distinguishes between categorical values with few and many different actual values. It should be the same as for everything else.