I have define a deployment step in order that each created release form TeamCity gets automatically created in Octopus and deploy to my DEV environment in order to always have last version there as shown in picture below
Ay ou can see from picture above, my new coming release version 1.0.43 is automatically deploy to my DEV, but then I can see also that my version 1.0.42 is also belonging to dev and I can frelly click on Deploy corresponding to my old version, which is wrong because last unique version on DEV is 1.0.43.
Q1 : Why I can still deploy my old version ?
Q2 : Why old version is still shown on dev
By default in Octopus, we will always keep the amount of releases specified +1. See how the green tick for the 1.0.43 release is dark green whilst the previous release 1.0.42 is a lighter green. This means the active deployment in the DEV environment for this project is 1.0.43, whilst the data for the previous release is still cached on the Tentacle. So it is not the active release but you have the option to redeploy it or promote it through the other environments still.
Octopus thinks of the deployment through the Lifecycle. So in your example, Octopus is giving you the option to deploy your project to the next phase of the Lifecycle. Not just for the most recent version but the previous Active release.
Does this help clear things up? Let me know if you have further questions here.