A few points here for the first example:
Complexity analysis of algorithms is not about a single case of the algorithm (with an array size of 2 for example), but rather about how long the algorithm will take in the best/worst/average case for arbitrarily-sized inputs (so an array of any given size). Technically, you do the analysis looking at the behavior as n (the size of the input) tends to infinity. Therefore, the if statements before your loops do not affect the asymptotic best-case performance of the algorithms.
Insertion sort's worst case is O(n^2). You can get this kind of time if the input array is already sorted but in reverse order. So your conclusion for the first case is wrong. So that I don't have to write a lengthy description of why this is the case, here's an explanation for why it's O(n^2) from here:
It's not entirely clear, however, how much longer the inner while loop will take if we have twice the array size. After all, it doesn't go through the entire array. In fact, on average, it only goes through about half the array, as our diagram here illustrates, sometimes less, early in the sort, and sometimes more, later in the sort, but half of the array on average. And even then it doesn't usually go all the way down to index 0. It will, again on average, scan through about half the sorted set before finding the right spot. So, it's reasonable to estimate that the inner-while loop must iterate through ¼ of the array for each time through the outer for-loop. The sorted set it must search averages half the size of the array, and on average it must hunt through half the sorted set before finding the right spot.
But, even if it's just ¼ of the array, that will still double if the array size doubles -- ¼ of 1000 is 250, and ¼ of 2000 is 500, twice as much. And so when the array size doubles, the inner while loop takes twice as long on average, and it must be performed twice as many times by the outer for loop. Thus insertion sort takes 4 times as long to run when the array size doubles. It's run time is proportional to n^2, and we say it is O(n^2).
For the best-case, you are wrong too. Even if it "just returns" you are still going to go through a number of comparisons proportional (really, equal) to the number of elements in the array (even if it's just 2 elements). So the best-case is O(n) comparisons, as you will have to check whether each element is in its right position, but O(1) swaps (in case it's already sorted in the right order and there's nothing to swap anywhere).
Also, in your code, you are returning a boolean in one place and Integers in two other places of the same method. This doesn't make sense.
Hopefully that's all clear.