If you are thinking of getting a ball python, that is great, and I hope you enjoy it when you do get it. Just make sure you have everything set up and ready to go before you get your snake.
Thinks you will need:
Enclosure
Substrate
Under the tank heat mat
Thermostat
Clean spray bottle
Two tight fitting hides with one entry hole
Water dish
Digital temperature/humidity gauge
*Decorations are optional
Ball python husbandry:
Ambient air temperature: 78-85 degrees
Cool side: 78-85 degrees
Hot side: 90-93 degrees
Humidity: 50-60% regularly- 60-70% when in shed.
Here is an example of one of my set-ups:
Now to answer your questions, no, a ball python can not live it's whole life in a 20 long gallon, but you would get good use out of it for a year to a year and a half if you got a baby ball python. Either of the two substrates you have mentioned would be fine, both aspen and astro turf are recommended. I prefer Eco-Earth expandable substrate over others, but that is my preference and you can choose what you like best. As for feeding, you do not have to feed in a separate enclosure, it is not recommended as it can stress the snake out and cause it to not eat. Feeding a ball python in a separate enclosure is not necessary as they are not typically cage aggressive. Once you have fed the snake, leave it alone for 24-48 hours to have time to digest. Baby ball pythons typically eat every 5-7 days, most people start them off on mice and switch them to rats as it is easier to feed one appropriately sized rat rather than multiple mice to equal one rat. Adult ball pythons typically eat every 7-14 days depending on the snake, some adults may also go on long fasts during the year, but this is uncommon for babies.