Hi Esme,
I'll start with the morning nap. Waking at 30 minutes can often indicate overtiredness. With his increased activity and awareness he may be more tired for that first activity time. I would try putting him down after 1.75 hours instead of 2 hours. Many babies do best with a shorter first A time. Definitely work on getting a longer first nap. If possible, try to keep his activities fairly low key. Maybe a walk outside for some fresh air.
Your second activity time is also quite long for his age at 3 hours, but this is a result of the short first nap and I can see how you would want to keep him on a good schedule and not let that second nap be too early. However, by now he is very overtired and likely why he won't go down well or stay down. I would try not to let this A time go over 2.5 hours. It may give you an earlier nap at say 11:30, but he may then be rested enough to stay asleep (maybe with your assistance) and you could have a nap ending at 1pm, instead of it starting at 12 and ending at 12:30-12:45 KWIM?
My DSs activity times at this age were 1.75, 2, 2.25 and 2.5 if that helps at all. You may want to go by A time more so than clock time for a little while to see if it helps him catch up on his sleep.
When he wakes at 30 minutes, are you already in the room, or do you wait until he wakes? You may want to go into the room before he wakes and lay your hand on him to prevent him jolting, or lightly pat him.
Waking at the 45 min. mark after being put down at night is definitely a sign of overtiredness. I think if you work at decreasing his A times and extending his naps then you'll see marked improvement in his sleep. Is there a reason for the 6:45 bedtime? You may find it beneficial to push that up a bit as well for a while, say to 6:15.
Please let me know how it goes.