1. They can grow inside a cave; as long as there is heaps of light (from jack-o-lanterns) and space for the leaves; adjacent to a water block; sapling planted on dirt.
2. Trees can grow in the nether :-O. You need to clear out any nearby fires; plant the sapling on a dirt block.
The benefit here is if you have trees at the bottom of your mine; you basically can have a close endless supply of wood for your mining operation; especially if you are hunting for diamonds; its nice not to have to go to the Overworld (surface) to chop down trees.