Idodo:

so in doing 2d convolution on an RGB image we are actually convolving each filter by each channel. In the case of 3d convolution we would alternatively be convolving all 3 channels at the same time by each 3d filter.


I don’t think this is completely correct.
For a “standard” 2-dimensional convolution, each filter will use all of the input channels.
The number of output channels of the convolution layer defines the number of filters.
Have a look at CS231n 38 which explains the applied logic pretty well.
Grouped of depthwise convolutions work a bit different regarding the processing of the input channels, but lets stick to the vanilla use case for now.
3-dimensional convolutions also use all input channels for each kernels. However, now you are performing the convolution in a volume (depth, height, width), so the kernel moves in all three dimensions this time.



 Idodo:

In the case of 2d convolution of grayscale images, is there a difference between using a batch of say 100 images and using an image of “100 channels”? (besides losing the flexibility of mixing images between batches)


Yes, these approaches would yield different results, as in the first use case, the filters would have a single input channel, while in the latter approach they would have 100 input channels.