Let's start with the second creation (it's the easiest one) :
Here you're creating a Toyota object and for the entire course of your program this will be a Toyota with all his specific properties and methods AND the protected/public properties and protected/public methods it INHERITED from car.
The first creation is also valid but is polymorfic, drawback is that you won't be able to address the Toyota specific properties and method, because it has only been declared as a Car. However deep down it's a Toyota, so when you do this
Toyota t2 = (Toyota)t;
You've changed (casted) it to a Toyota.
The first creation works because a Toyota is also a Car. The other way around doesn't work because a Car isn't always a Toyota, it can be a BMW of a Lexus, .... and because the compiler has no certain way a telling what is can be, this is not allowed.
Little tip : inheritance is easy if you draw the inheritance tree. Put superclass on top and subclasses under it and so on. Inhertance works traveling down, not traveling up
Hope this clears it a bit