You're not alone - everyone worries they've screwed their kids up by shouting at them and losing their temper. Everyone does it. Don't be too hard on yourself.
Tomorrow is a new day. You cannot cancel his birthday because of things that have already happened. You would never forgive yourself for that, you would break his heart and you would gain nothing from it in terms of improved behaviour. It would be pointless.
I think you need to rethink the whole bed time thing as you identify this as where he always kicks off. Four/turning 5 is still very young. It could well be he is over tired and over stimulated by bed time and that is why he kicks off.
Every child is different - some go to bed easily and unfortunately some don't.
Suggestions: Many children will behave very badly because they are hungry or over tired. Look at his diet and cut out all processed and sugary snacks for at least 3 hours before bed time. Some foods promote sleep others promote wakefulness. Make sure he has a good dinner in the evening like pasta which will keep him full. Then make sure he has supper 30 minutes before bed - toast, warm milk etc. This should help him sleep.
Bed time routine - make sure you have no TV or computer/iPad/electronic games for at least 1 hour before bed time, and longer if you think it is part of the problem. Turn the TV off - he doesn't have to be fully focussed on watching it for it to be stimulating his brain and keeping him awake. Put the younger one to bed first and - if you have the house room - in separate bedrooms (even if just for a short time to establish good bedtimes and if it means moving the youngest into your room). See if your eldest will be your helper for the younger ones bedtime - helping wash him, change him, tell him a story. If he has helped get him to sleep he will feel proud of himself and want him to stay asleep. It will take longer than bathing them separately but will pay off because hopefully you'll have a shorter bed time over all. Then have time with your eldest.
Have him change for bed before he gets supper. Make his supper together, sit down for a quiet chat together and remind him of all the things that he has done well/made your proud of that day. It will help you keep things in perspective and make him feel good about himself and your relationship which aids cooperation. Be clear that after supper it is bed time and story - do the story with him in bed, not out of it. Make sure everything else is done - toilet, drink of water by the bed etc to reduce his excuses for getting out. Once the story is done stay with him until he sleeps but tell him quietly and firmly you are not talking to him as it is sleeping time and if he gets out again you will leave the room. I lie on the bed with my 4 year old and either read or play on the ipad. I simply tell her I am done talking and it is bed time if she tries to start chatting and she has learned to lie peacefully and is asleep in about 10 minutes - if I leave her before she sleeps I know she will be out of bed in 2 minutes so this is easier, calmer and peaceful for us all. If he gets out of bed put him back and tell him he has to stay in bed now. If he persists in getting back out, put him back without saying anything. Follow up on promise to leave the room and keep putting him back to bed silently. You may have a long battle on your hands but you will win. You may have to put him back to bed 20-30 times, but you will eventually win and once the first night is done it gets easier. If you have a partner at home support each other in doing this - e.g by having him pour the wine for you:) or intercept the youngest if he is woken.
Praise him in the morning when he has had a good bed time. Have a sticker chart and agree a prize - day out to zoo, park etc - if he goes all week with a calm bed time. Have a clear routine in the evening where he can tick things off on a chart - teeth done, laundry in basket, helped brother go to bed, supper dishes in sink etc. Small tasks where he can see he has done things and bed time is approaching. Buy some new story books (or get a stock from the library) and have his choose his bed time book early on so he is eager to have it read. Make the story time his time - not a shared story with his younger brother. Start bedtime around 6pm and aim to have him in bed by 7:30 and asleep by 8pm. He should be going early as he is still very young and if you are leaving it till 8pm to start getting him into bed he will be over tired by then and many kids go metal when over tired.
Bed times are hugely stressful as we are all tired by the end of the day and you are not being any worse at it than the rest of us. Have a clear plan and stick to it. Explain to him how you are going to be doing bed times from now on because you hate it when he is so tired and upset and you are getting cross and shouting and this will be better. Enlist his cooperation by having him choose the end of week prize, stickers etc and having him suggest ways he can help get his brother and himself ready. Let him have his role as the big boy but also remind him he is still your baby and you want your snuggles and story too once his younger brother is in bed. This should motivate him to help and keep the noise down to keep the younger one asleep.
Everyone says calmness and consistency are the key, as if they are the easiest things in the world to achieve :) It is hard to be calm when you are tired and just want them in bed and asleep. It is hard to be consistent because you react to their bad behaviour or cut out things to hopefully shorten how long it takes. But really, really go for long term consistency. Work out a bed time routine and stick to it; not for a week, or a month but for as long as they need you to be putting them to bed. And good luck. It is very hard at times.