No, an imageInputLayer does not reshape the input that it receives, as demonstrated in the following,
net=dlnetwork(imageInputLayer([3,4,2]));
out = net.predict(rand(3,4,2))
A fullyConnectedLayer does keep its Weights in flattened form, as shown below. That may or may not mean that it flattens the input it receives when it comes time to apply the weights. It doesn't really matter, though. The point is, you are not responsible for doing any reshaping/flattening. That is taken care of internally by the layer when its predict() method is called..
net=dlnetwork([imageInputLayer([3,4,2]), fullyConnectedLayer(6)], dlarray(out,"SSC"));
size(net.Layers(2).Weights)
net.predict(rand(3,4,2))