You can use the raw counts to normalise your data. It is import to do so before doing a differential expression analysis: otherwise you will detect more reads from samples with higher coverage and from longer genes. A gene with longer mRNA molecules will produce more reads than a shorter one for the same number of transcript molecules. Samples will not produce the same number of reads due to variation in cDNA extraction, amplification, library preparation, etc.
This does not inherently mean that a sample expresses every gene more than another sample. Hence we compare samples by relative rather than absolute expression (for microarray and RNA-Seq data). This is in principle, very similar to using housekeeper genes in qPCR experiments except we adjust for total RNA or reads, gene length, and batch effects.
There are many ways to achieve this but I recommend using the limma package in R. This provides the “voom” normalisation procedure. “voom” is documented in a separate follow-up paper to the limma paper. It produces normalised data (on a log-scale) which is compatible with downstream analysis provided by the package (including built-in Venn diagram and volcano plot functions). See the package vignette for more details.
Of course, everything here only applies to bulk RNASeq experiments and procedures for single-cell analysis are different.