Thanks for the link. Ok, so I went through the tutorial. It went into great detail, except for the part that would actually answer my question.
So I went back to the dependable way of learning: trial and error. I found that the answer to my first 2 questions were both "yes."
1)In your custom template fields, the strings you pass in the "Bind" and "Eval" methods MUST match the parameter names in the actual insert/update methods (in the Category class).
2) They don't have to match case. I even used Eval("TiTlE") etc. and things still worked.
Also, every templatefield must have a corresponding parameter placement (in the Category class's insert/update methods). No more, No less. But, I realized that since the spelling of these names match, I could change the order of my templatefields, or even Category class's insert/update method parameters, and things still work.