Mathematica – 179 163 154 151 chars
a = {2, 2, 2};
s = Export["out.txt",
CellularAutomaton[{224, {2, {a, {2, 1, 2}, a}}, {1,1}},
(ReadList[#1, Byte, RecordLists → 2>1] - 46)/ 42, #2]〚#2〛
/. {0 → ".", 1 → "X"}, "Table"] &
Spaces added for readability
Invoke with
s["c:\life.txt", 100]
Animation:

You can also get a graph of the mean population over time:

A nice pattern for generating gliders from Wikipedia

AFAIK Mathematica uses a Cellular Automaton to generate random numbers using Rule 30.