Apo B48 and apo B100 are expressed as two different apo-proteins because of difference in
RNA editing 

Apo B-100 and apo B-48 are closely related polypeptides.
Apo B-100, a single polypeptide of 4536 amino acids, is encoded by the same gene as apo B-48.
Apo B-48 consists of the first 2152 amino acids of apo B-100, counting from N terminals. These (2152 amino acids) account for 48% of total amino acids (4536) of apo B-100. Therefore, it is called apo B-48.
In the intestine, after synthesis of 2152 amino acids by their respective codons, the codon 2153 (CAA) acts as stop codon which terminates further synthesis.
Therefore, in the intestine, translation stops at the 2153rd codon so that instead of a polypeptide chain of 4536 amino acids (i.e. apo B-100), a shorter polypeptide chain of 2152 amino acids (i.e. apo B-48) is synthesized.
This is an example of tissue-specific editing of an RNA transcript.
RNA editing
RNA splicing
Chromosomal loci
Apo-B gene