What is the most appropriate way to normalize gene expression data?
Normalization of expression data is a big topic with new methods being published regularly. When approaching something like this you generally want look at people who have done similar things to what you've done, and then once you understand why they did what they did, you can ask what you need to do to answer your questions. Always keep your biological question in mind. For instance if you're measuring QTLs, you'll need to be a lot more careful than if you're just looking for genes effected by a knockout mutation.

In general you want to use quite different methods for RNAseq and Microarray data. The two data types follow completely different distributions (RNAseq gives you count data, microarray data gives you continous signals) and have different types of technical noise effecting them (GC content will effect both, but in a different way). Some methods can be used on both, but usually involve coercing the data into a different form (e.g. mapping counts to a normal distribution). The limma package for R can handle both, using different distributions, and is a good start. Newer, purportedly better methods exist for RNAseq, which I haven't personally used.