In your first use case (different number of input channels) you could add a conv layer before the pre-trained model and return 3 out_channels.
For different input sizes you could have a look at the source code of vgg16 567. There you could perform some model surgery and add an adaptive pooling layer instead of max pooling to get your desired shape for the classifier (512*7*7).
Note that the performance of your pre-trained model might differ for different input sizes.