Can someone explain the relationship between batch size and steps per epoch?
If I provide the definition using the 272 images as the training dataset and 8 as batch size,

batch size - the number of images that will be feed together to the neural network.
epoch - an iteration over all the dataset images
steps - usually the batch size and number of epochs determine the steps. By default, here, steps = 272/8 = 34 per epoch. In total, if you want 10 epochs, you get 10 x 34 = 340 steps. 

Now, if your dataset is very large, or if there are many possible ways to augment your images, which can again lead to a dataset of infinite or dynamic length, so how do you set the epoch in this case? You simply use steps per epoch to set a boundary. You pick an arbitrary value like say 100 and you assume your total dataset length to be 800. Now, it is another thing on how you do the augmentation. Normally, you can rotate, crop, or scale by random values each time.
Anyway, coming to the answers to your questions -

Yes
Yes
Yes if you are using Mini-batch gradient descent
Well, yes unless it overfits or your data is very small or ... there are a lot of other things to consider.
I am not aware of any. But for a ballpark figure, you can check on the training mechanism of high accuracy open source trained models in your domain.

(Note: I am not actively working in this field any more. So some things may have changed or I may be mistaken.)
I have a training set containing 272 images.

batch size = 8, steps per epoch = 1 > train the model for just 8 images and jumps to next epoch?
batch size = 8, steps per epoch = 34 (no shuffle) > train the model for all 272 images and jumps to the next epoch?
At the end of each steps per epoch does it update the weights of the model?
If so, by increasing the number of steps per epoch does it gives a better result?
Is there a convention in selecting batch size & steps per epoch?