In my experience, the best way to start warm and stay warm while in a sleeping bag is to fill a Nalgene, or similar watertight container full of hot water (a small backpacking stove/pot works great, is cheap, and takes up little space), and place one or two of them in you sleeping bag prior to climbing in. This will pre heat the sleeping bag and it will stay warm for many hours. Also, wear a beanie to keep your head warm.
A hot rock grabbed from a fire ring can be dangerous as it's difficult to control the temp. of the rock, and depending on sleeping bag material the sharp edges can damage the bag material. Chemical hand warmers are ok, but they need to be held against the skin to be effective, and will only keep that specific area warm. A hand warmer will do little to nothing to pre heat your bag as they produce very little ambient heat. Sleeping bag liners work ok, but they are more expensive than a Nalgene bottle, and they do not produce heat, but only help in retain heat generated by your body.
After many uncomfortable nights, usually from cold feet climbing into a cold sleeping bag, while hunting in Montana in late November I learned about the hot water bottle and it was a total game changer. There's just nothing else that's as effective, cheap, and safe. It will bring your bag's temp. rating to well below its stated lower range.
Last, if you will be sleeping on a cold surface, you must insulate yourself from that surface. You will lose more heat to the ground than you will to the air, as the insulation in your bag is compressed by body weight, therefore losing its ability to maintain loft and heat.