Using highly variable data for training neural networks (NN) model may induce "overrating". So for practical reasons normalizing (or standardizing) the inputs in NNs can make training faster and reduce the chances of getting stuck in local optima. That the reason for normalizing data. A good choice for inputs is range [-1:1]. Another possibility is to scale the inputs to have mean 0 and a variance of 1.
Target normalization depends on the activation function used. For tanh is range [-1:1], for sigmoid function, for example, is [0:1], and the range arises from the nature of the function (output range). This is valid for continous data in input and output. An "advantage" of range [0:1] (sigmoid) is that output of ANN can be interpreted as a posterior probability.
Really, normalization for targets must be in the range [-0.9:0.9] or [0.1:0.9] (depending of the activation function used) to avoid the asympthotic parts of the function, regions where resolution is smaller.
For clasification problems as yours, output is discrete and not continous. You are two possibilites for your system:
example: 5 classes. Output is 1 unit with value continuous between 0 and 5 (normalized in the appropriate range as discussed above). Class is defined by the range where output is located (first class for target between 0 and 1, second class for target between 1 and 2, a so on, obviously in the normalized version);
example: 5 classes. 5 neurons target with discrete value 0 or 1. You train the net assigning 1 to correct class for each example and 0 for the other 4 neurons. Practice demonstrates that this option is better.
My suggestion: input normalized in the range [-1:1] (continuous variables given RGB values between 0 and 255, I think); output composed by n neurons (in the same number of your target categories for classifier), where only one unit target for each trainig example is assigned to 1 (all other to 0).
I hope I undestanded correctly your question.