An instance moves through a few states. Each change has rules about the bill, the disk and the addresses.
Stop and start
aws ec2 stop-instances --instance-ids $IDStop is a clean shutdown. The disk and everything on it stay, as does the private IP, and you stop paying for compute. The disk is still billed.
aws ec2 start-instances --instance-ids $IDStart boots it again from the same disk. One thing changes: the public IP. It was borrowed from AWS's pool, went back when the instance stopped, and a new one comes with the start. Anything that remembered the old address now points at nothing.
Terminate
aws ec2 terminate-instances --instance-ids $IDTerminate ends the instance: it shuts down, its disk is deleted, and it cannot be started again. After a while it disappears from listings. Terminated is free, and final.
Each command answers with the instance's previous and current state, such as running to stopping. Check where it is now with the same describe-instances query as before, asking for State.Name.