The thing is the matrix translation node is basically a compose matrix node but with no control about rotation and scale. This means whatever you do with the translation matrix node it is always going to output a matrix with a 0, 0, 0 rotation and a 1, 1, 1 scale. If the objects you are looping through had a rotation and scale, they are going to "lose" them by going through this kind of loop. One way to solve this is in the following setup:

Here all the objects in the 3D view are going through the loop but are not loosing their initial loc, rot and scale. From there if you add a compose matrix node in the free input (which is going to input a loc: 0, 0, 0 rot: 0, 0, 0 scale: 1, 1, 1), you can controle all the objects realtive to their intial position, instead of overwriting it.
I don't know if this is also valid in the master branch of AN, but their is a handy thing added to the object matrix output node, which is dealing with object and matrix lists. The latest version of an can be found here. You don't have to loop anymore. The thing is there still is no matrix list math node (at least I've not found one), so you will still have to loop but this is useful for making a grid (if you are not playing with indices).

This is only an answer to the first part of the question, indeed animation nodes seems to have problems dealing with matrices. You can find the bug report here in order to solve matrices problem.
I don't know why this happens but somewhere your node setup you are trying to get elements from a list but this list is empty so it shows an error. I hope this was kind of helpful