A programmer knows how to turn user requirements into code. The programmer should have adequate experience but still need to accrue experience in producing high quality code.
A software developer is a programmer who has learned additional professional skills to turn user requirements into code with a view of writing sustainable code.
A lead software developer is a software developer who takes a prominent role in developing a code base. She will typically lead a group of software developers by ensuring adherence to good practice while leading by example. She will have several year's experience but open to learn new technologies in line with requirements.
A system architect is a seasoned software developer who now has responsiblity to define how one or more significant components of a software system work. He will also be well versed with configuring underlying infrastructure as well as decide the best tools for the job.
A lead systems architect leads a team of system architects in defining how the overall system works. She will lead a team of system architects each of whom are responsible for one or more components of the overall system.