In layman's terms:
In case of bubble sort, all adjacent elements compare to check which one is greater(or smaller), and then arrange accordingly.
Let's take an example:
We've an array 9,6,4,7 and we want to sort it in ascending order.
First we compare 9,6 to see which one is larger, and swap the larger element on the right, i.e. the array now becomes 6,9,4,7.
Next we compare 9 and 4, and on similar lines(as above), the array becomes 6,4,9,7.
Now finally, we compare 9 and 7, and the array after one full iteration becomes 6,4,7,9.
Now, if you observe carefully, the largest element automatically reached on the rightmost position. We now have one element in place (the last one), and now we repeat the iteration with first n-1 elements (n being the total number of elements).
We repeat the iteration till the size of the array to be iterated is 1, or the array is sorted.
Insertion Sort, on the contrary makes us assume that we've two arrays, one is sorted and the other one is unsorted.
The sorted array is initially empty.
Again, let's see with an example:
Unsorted Array:6,9,4,7
Sorted Array:
Now, we iterate over the elements of unsorted array, and place them accordingly in the sorted array, in a sorted manner.
Element scanned: 6
Since the sorted array is empty, we simply put 6 in it.
Unsorted Array:9,4,7
Sorted Array:6
Element scanned 9
Since 9>6, we put it on the top of sorted array.
Unsorted array:4,7
Sorted Array: 6,9
Element scanned: 4
Clearly, 4 is less than 9 and 6, so we put it in the first place in the sorted array:
Unsorted array: 7
Sorted Array: 4,6,9
On scanning the last element, we get:
Unsorted array:
Sorted Array: 4,6,7, 9