Question: How do you go about getting the information you need to create your features?
How do you do that today?
The techniques you use to develop a clear understanding of the problem, establish characteristics of a good solution, and develop good solution options are not that different in an agile approach. What may be different is when you elicit that information, and how you use the requirements you develop to plan what the team does.
You are more likely to utilize elicitation techniques that involve working closely with your stakeholders with a preference toward the more collaborative approaches, such as requirements workshops. You will find yourself interviewing stakeholders, but those interviews will soon take on the feel of frequent and informal conversations, often while looking at product that has been produced or is under construction.
Question: How and when do you stop a “features list” from growing? At some point coding and testing needs to occur.
Agile approaches are structured in such a way that the features list can continue growing, and yet coding and testing can get started fairly early. This is accomplished by having multiple layers of planning. For example, using Scrum, a team meets with the product owner at the beginning of a sprint (aka iteration) and determines what features (aka items or user stories) will be delivered in that sprint. Once that decision has been made, the content of that sprint, as far as the features included is concerned is fixed. No additional features can be added for delivery within that sprint. Meanwhile features can continue to be added to the overall features list (product backlog) to be prioritized and included in future iterations. The product owner revisits progress at the end of each sprint and determines whether sufficient features have been delivered to implement the product, or if further features are needed, which are delivered in subsequent sprints.
The planned contents of each sprint may be laid out ahead of time in a release plan which provides an initial glimpse of what may be delivered when and roughly how long the project will take to complete. This release plan is also reviewed at the end of each sprint to determine whether the planned order of delivery needs to change, and if more or fewer sprints than those planned need to be undertaken to deliver desired outcomes.
Update: Feature Injection is an approach that also helps answer both of these questions.