Firstly you need to understand that this train Exclusive Connection for South Mumbai (Bombay High Court, Vidhan Sabha, Offices in Fort, Sewri, Colaba etc) with Pune. 2 AC Chair Car Coaches dedicated for MST Travelers. Many High Court Advocates and South Mumbai Office goers use this train- since it isn't even remotely affordable to have accommodation in South Mumbai.
12124:
Reaching Pune Station is easy in Mornings. So there was no point in providing halt at Shivaji Nagar. People find it more convenient that time.
Lonavala...
more... being a Tourist Destination gets halt both times.
Dadar in Mumbai is given for people going towards Churchgate, Prabhadevi, Mumbai Central, Marine Drive as on Road traffic could eat up their time. Reaching Office on time is more important that leaving office on time ЁЯШВ. People of course use Dadar nowadays to go towards North (Bandra, Andheri, Malad etc.)
12123:
After finishing Office Work People reach CSMT Station to board Deccan Queen, easy to board due to relatively less late afternoon traffic and works in sync with Bombay High Court timings. Dadar isn't needed as most users are from South Mumbai. For people of Dadar and Thane- Sinhagad Express is coming afterwards this train.
Karjat halt due to aforementioned technical reasons.
Lonavala halt due to Lonavala being Lonavala.
Shivaji Nagar halt is due to University Road (on one side going towards Baner, Aundh, Pashan), JM Road (going towards Peth Area, Karve Nagar, etc) and on the other side Mumbai Road (going for Pimpri, Chinchwad, Bhosari etc.) and Sangamwadi Road (for Yerwada, Viman Nagar, Vishrantwadi etc.) being in walkable distance and free of traffic.
The roads around Pune Junction become swelled up at around this time as many people come from their offices, from markets in Camp area etc.
So facilitate faster transfer Shivaji Nagar halt was given.
Hope this helps.
Nowadays Pune City has expanded so much that people want Halts like Pimpri and Shivaji Nagar but if you'll look at it's occupancy and type of crowd. This halt system totally works.