How to make a grid of objects with individual rotations?
The Sverchok Add-on has convenient nodes for this:





You pick the object you want to duplicate, and you pass it a set of Matrices. These Matrices contain location and rotation data each. 


The location data comes from the Plane generator (this generates the grid of locations using a subdivided plane with X and Y divisions (W, H).) 
The rotation data comes from the Vector (0,0,1)  node and the integer range node produces a steady stream of 25 or (W*H) sequential integer going from [0 .. 18 .. 36 ... etc]


You might set the step size in the list Range int node to 45 or -45, and adjust the W and H to suit you.



The Plane generator generates coordinates (viewing from topview) from bottom left to top right. If you really want to start top left you would transform the output of Plane with a Rotation node.





I think the benefit of this method is that it's entirely dynamic. You can pick whatever number of rows or columns and the step rotation.