Converting nominal data to numeric - is using dictionaries the right approach?
Usually, when dealing with nominal attributes, you want to use the binary vectoriser approach. Unless you have a very large number of nominal values, it typically doesn't matter that you're adding a few attributes. If you do have a huge amount of nominal values, you can try things like dimensionality reduction on the binary attributes (although this reduces interpretability) or joining some nominal values together.  
Yes.
If the nominal attribute is discrete but ordered (called an ordinal attribute) -- for example, the severity of a cancer (stage 1, 2, 3 or 4) --
then you can use whatever numbers you feel are appropriate. It really depends on your domain knowledge, and the choice of model. For some models like decision trees, it doesn't matter, but for others like logistic regression the choices of the numbers can be influential. I would recommend just continuing as you have been by using intervals of 1, unless your knowledge of the domain says that particular adjacent nominal values should be further or closer than the others.