Disable alarms for all day events in google calendar
I suspect that the events for which you get notifications have a reminder set in them. So the easiest way to get rid of the notifications is to turn off the reminders in the events themselves. Typically, you would not have a reminder in the birthday event but if the event came from somewhere else (like Outlook or other phone) then the reminder might get added to it. I had this problem on some phones...
however, it could be very tedious to remove reminders individually if you have many events with unwanted reminders. 

The second part of the question: I'd use Tasker app for that. However, you have to pay for it. I am aware of a free automation app AutomateIt (sorry can't add a link because I don't have enough rep here) and from description it looks like it can also kill sound based on a rule but I have not used it myself so will not comment. 
For Tasker there are instructions on how to implement "Sleep mode" with which the phone with "shut up" at night. If you go down this path I can assist more since I have set this up on my phone and it works quite well.