There are a lot of factors involved, as Snorks says.
The two biggest factors, from my experience, are personality and playing time. Other factors still matter, but I've managed to get players developing even without the best facilities and coaching. A high potential player with an ideal personality will improve quite bit just playing in the reserves or youth squad, but they will reach a point where more competitive matches are necessary. Every time I've developed a high potential young player into a wonderkid, and a wonderkid into a true star, its taken regular first team matches. When a player is improving from those first team matches, I often get coaches reports encouraging them to keep getting first team matches. But it is possible to overplay them if you aren't careful, which can neuter their development. Coaches reports matter as its the game telling you what the player is ready for, needs, etc.
Conversely, I've had quite a few high potential (5 star) players who didn't develop at all because of problematic personalities. Low ambition and professionalism, and refusals to be tutored, have seen them sit in the youth squad for 2-3 years without almost no development, while others have improved massively in the same time period.
When seeking out prospects to develop, I actively look at personality as much as anything else. Starting skill levels matter too. I used to purely target potential. But if the player has a mediocre or worse personality but I don't have anyone to mentor them, or if they don't fit in with how I want to play, those are going to be extra barriers. I have also learned that 3 star prospects can have their value, especially if you have home-grown rules you need to fulfill. With a positive personality and match time, they can still develop into a very useful player.