You’re welcome. Here are some points:

1000 epochs are too huge, consider numbers about 25 to 40 epochs. Actually, you have a few classes with a lot of examples, so you do not need a lot of time to train it even if you have deep model.
If your model can fit properly, it is ok and you are good to go. No need for overfitting.
Overfitting works as a precaution for you. For example, as you asked first in this thread, you are not sure your model working inefficient or colab is not working properly. So you use a small sample and train for longer time to make sure you have implemented everything (logical or optimization aspects) correctly.
As I have mentioned before, we use experimental (fastest method by the way) configuration to make sure our model can overfit. For examples, using Adam as optimizer or LeakyReLU as activation function. Many times, a simple mistake such as reading data inefficiently, unnecessary duplication of tensors, etc cause you lose a lot of your GPU memory.
Overfitting does not provice any confidence about your model. Actually, it works like a Counterexample.
6.Using learning_rate_decay is rare so you can check it after everything. Currently I do not have any useful example of this implementation but in a few days maybe I implement it myself. I will let you know if I implement it.
For last part, yes, 1000 image is enough and you do not need to include other image in this step, because we want to our model only learn a few things so can overfit.

In the end, if your model overfitted, you are good to go to use your real dataset. But still I am not sure Google colab can support it or not.
By the way, if this task important to you, you can rent a Google Preemptible compute engine or Amazon EC3 Spot which costs around 35$ per month for about 7 hours per day usage and a Tesla K80 GPU, Dual core CPU with 16 GB RAM.