Could be a lot of things. A dying battery will make a vehicle slow to start and might even make it die before the alternator can get moving to provide amps. Cold weather doesn't help and makes an engine even harder to start and lowers the amps a battery has.
Could be fuel related. An engine that stumbles at idle speeds but is ok when driving might have a clogged fuel filter, clogged fuel line, clogged in-tank filter sock, or just a worn out fuel pump or rust floating around in the tank.
Can also just be from poor maintenance - using thick, thick oil instead of 5W-30 in cold winter months, poor quality fuel, old worn out spark plugs or wires, even something as simple as an old, old air filter that is super dirty.
Best thing is check all of the above and replace anything that isn't in top shape. Better to spend $$$ on a new battery, new plugs, wires, fuel filter, air filter, etc. than have it stall out in the middle of the road one day and leave you stuck and needing a tow if it doesn't start again.