1. Matrices represent linear functions between finite-dimensional vector spaces. That is, if you have a function f from V to W that satisfies f(ax + by) = af(x) + bf(y), then there is a matrix A such that f(x) = Ax, and vice versa.
Once you understand that, try to figure out what happens to those matrices when you compose functions. In other words, when you define h(x) = g(f(x)) (assuming that f and g are linear maps that can be composed in this way), then given the matrices for g and f, what will the matrix for h look like? You will end up with exactly the rules for matrix multiplication.
The reason that you call this result "multiplication" is simply that it behaves very much like the multiplication that you are used to from the reals. In particular, you get a ring on square matrices, with (matrix) addition and multiplication that satisfy a distributive law.
2. I personally think that those angles are a bit of a red herring. In particular, the cross product generalizes in a somewhat more complicated way to higher dimensions, and then you have to talk about determinants instead of angles. That would take too much time and space to explain properly here.
3. Set and the "element-of" relation are not defined in the usual sense. They are indeed simply assumed, and you just postulate the properties that they need to satisfy, a.k.a. the axioms of set theory. It's a way of thinking that takes some getting used to, but as an analogy, try to work through Euclid. He doesn't define points or lines, either, but only postulates properties that they need to satisfy.
4. Because 0.9999... is usually interpreted as a real number, and not as an infinite sequence of characters. As a real number, 0.9999... has no meaning except as a limit, and hence they must be equal. As infinite sequences of characters, 0.9999... and 1 are of course different, but that's not how we usually interpret them.
If you think that this is in your way when understanding Cantor's infinities, perhaps you should try to use the diagonalisation argument on infinite bit strings instead of on real numbers. That way, those kinds of subtleties simply do not arise.