Understanding arrangement of applying filters to input channels
Ok, here's the break down:

The depth of an input to a convolutional layer is termed channels. The depth of a convolutional layer is the number of kernels (aka filters). The depth of a kernel is equal to the number of channels in the input.

See below:



The input (of 7x7, pad of 1) has 3 channels. The convolutional layer has 2 kernels (or filters). Each filter has a depth of 3, equal to the number of channels in the input. Using the notation you used in your question:


Filter 1, channel 1 to input channel 1
Filter 1, channel 2 to input channel 2
Filter 1, channel 3 to input channel 3
Sum all three channels of filter 1, then add bias
Filter 2, channel 1 to input channel 1
Filter 2, channel 2 to input channel 2
Filter 2, channel 3 to input channel 3
Sum all three channels of filter 2, then add bias


These steps are repeated for each frame the filter slides over the input image.

To answer question 2, if the output is 128, that simply means there are 128 filters. There could be an infinite number of filters if you so choose.

EDIT:

Here's the link to the interactive graphic: http://cs231n.github.io/convolutional-networks/