There seem to be some issues regarding the shape in the forward method.
Currently, input[j][0][:, start_col_indx:end_col_indx] will have the shapes:
torch.Size([2, 2])
torch.Size([2, 1])
torch.Size([2, 0])

which will create an error.
Did you forget to increase the end_col_index?
Also, I might have misunderstood your function. If you would only want to multiply elements of the shape [batch_size, 2] elementwise, your weight parameter might contain only two elements.
Also, the backward method is returning None, which also seems to be wrong. Maybe you would want to comment the calculations back in?
Besides that the general code looks good.