A Programme Manager manages a number of projects (or portfolio), each run by project managers, that help to achieve a common goal. From wikipedia:
Program management or programme management is the process of managing
several related projects, often with the intention of improving an
organization's performance. In practice and in its aims it is often
closely related to systems engineering and industrial engineering.
A Project Manager manages an individual project, which might be within a wider programme. Their aim is to deliver the project they've been tasked with to the required quality, budget and timescale.
The project manager is focussed on delivering their individual project, where the programme manager understands the interdependencies between projects and may need to make decisions and assign priorities between projects when they come into competition or are competing for a scarce resource.
A development manager is often sat to the side of this, managing a pool of developers from a career progression point of view. They assign developers to individual projects in response to requests from Project Managers. The development manager is typically responsible for things like training (except where required for a specific project need), appraisals etc. You might have the same development manager for several years, over which time you are assigned to multiple projects (potentially over several programmes) with different project / programme managers.
Alternatively on a big project, there might be an overall project manager, then separate project managers with a focus on different workstreams e.g. Development Manager, Test Manager etc. They manage their focus area within the wider project.
That's the way it works in 'Enterprise IT' anyway.