Nested if ($stmt->execute()) {

There has got to be a better way of doing this. First of all pay no attention to the lack of validation and error checking. I just want the core of the script to work first. Also, Block 1 and Block 2 execute, Block 3 does not. Whats the best way to check for errors on MySQLi preperation AND executions?

Ultimately what we're doing below is
1) creating the account
2) Adding a notification to the account
3) Sending a welcome message to the user via the in-site mailbox.

So what I'm ultimately looking to learn here is:
1) Sensible way to check for errors in MySQLi (I'm googling it atm too) for debugging
2) Why block 3 isn't executing but block 1 and 2 is (number 1 should answer this for me) :D
3) A better way than nesting these: if ($stmt->execute()) { if one exists.

There is one other thing I'd like to point out. You seem to be storing the dates in two parts, both of which are strings. That's not ideal. You always want to try to use the database date/time types for dates. In MySQL, those are DATETIME, DATE, TIME and TIMESTAMP. In your case, you'd be better of using DATETIME. You can easily populate those types of fields from within MySQL itself:

There is one other thing I'd like to point out. You seem to be storing the dates in two parts, both of which are strings. That's not ideal. You always want to try to use the database date/time types for dates. In MySQL, those are DATETIME, DATE, TIME and TIMESTAMP. In your case, you'd be better of using DATETIME. You can easily populate those types of fields from within MySQL itself:
INSERT INTO tbl VALUES(when_created) VALUES(NOW())
MySQL always returns date-time values in the string format: "YYYY-MM-DD HH:MM:SS", for example: 2013-07-15 11:45:30.

What if I want to call the date in one place and the time in another and they're both stored in one field? Would I just add SELECT LEFT('datetime', 10); and RIGHT('datetime', 4); to my queries?

That can also be achieved in MySQL, using the DATE_FORMAT function, but doing it in PHP tends to make it more flexible; easier to configure. Especially once you start separating the business logic and database interaction more.

By the way, there are a lot of Date and Time Functions in MySQL, that deal mostly with the date-time types. That's one reason why you always want to use those types for dates.