^^ that's probably the problem!
Normalizing means setting a vector's length to one.
I'd suggest you read up on vectors first, then matrices, and then *maybe* quaternions, though you probably won't ever need them.
Matrices are useful because they represent linear transformations. If I were to say "rotate this object, then translate it, rotate it again, then scale it about the origin, I could just say V'=V*R*T*R*S, and then applying the inverse of the matrices would undo the transformations.
It's math plain and simple. First of all, if you don't already, LEARN SOME MATRIX ALGEBRA! If you don't know how to multiply two matrices, or what inverting a matrix does, then learn it!!!
Here's information about vector algebra: It's great to know if you're doing anything mathy in 3d.
http://www.neurofuzzydev.com/V/D/index.htm
This is a good website about rotation matrices:
http://www.cprogramming.com/tutorial/3d/rotationMatrices.html
An Euler angle is a rotation about an axis. So if you rotate a vector around the x axis, then the y axis, then the Z axis, that's a euler rotation, and the amount you rotate each axis by is the corresponding Euler Angle.
With matrices, you can represent these kinds of transformations really easily. If you have a rotation around the x axis, matrix X, and a rotation around the y axis, matrix Y, X*Y will give you another rotation.
I found this page to be pretty good also:
http://mathforum.org/mathimages/index.php/Transformation_Matrix