For cartesian tensors, they're really just generalised multidimensional matrices. I really mean multi-rank matrices but multidimensional seems more obvious when you think of matrices as 2d. Quickly, you need to introduce the concept of rank and keep dimension for it's usual meaning otherwise things are going to get too confusing.
Contraction, when done on a single tensor, is just the trace of the matrix. When the rank is 3 or more, you're doing a trace operation for each 2d "slice" of the tensor, so you get a tensor of rank two less than before (trace of a matrix is just a number or rank 0 tensor).
Cross product gives you a big tensor with every possible product in it, often not terribly useful, but contraction across an index from each component tensor in the product gives you a generalisation of matrix multiplication.
I've often wondered about the whole column vector = vector and row vector = covector. The dot product then works, and you can disallow transforming one to the other by straight transposition but forcing the use of the metric. I think this breaks down pretty quickly though as when you write down matrices as being one up and one down index tensors, you can't really have a consistent notation for writing down tensors of rank 2 with all up or all down indices.
At this point index notation, and repeated index summation convention become very necessary but I think that contraction across outer products being like matrix multiplication is a useful understanding point.