Array experiments involve chemical and photographic processes that always vary slightly.
Some parts of an array will have higher concentrations of chemicals, maybe to top or bottom of the array, or maybe a patch in the middle will be illuminated brighter than the rest of the array, or darker. For this reason you would use within-array normalisation to try to correct for these technical variations caused by the chemical and optical processes - you are aiming to remove technical variation within the array so that you can compare expression values between genes.
Some arrays in an experiment will be illuminated brighter than others, or have slightly different concentrations of chemistry, and this will mean that all the signals from probes are stronger as a whole for one array than another. For this reason you would normalise between arrays, to ensure that each array is comparable with each other array in the experiment.
http://webdocs.cs.ualberta.ca/~ys3/microarray/survey_normalization.htm for more information regarding normalization.
I would also like to suggest you to read little about quality control analysis before normalization process. This link will give you an overview (http://compdiag.molgen.mpg.de/ngfn/docs/2005/sep/beissbarth_cDNA_QCPP.pdf).