Find non-case sensitive string in a mixed list of elements?

Position[list, s_String /; ToLowerCase[s] == "abc"]

{{3, 1}}

or

Position[list, s_String?(EqualTo["abc"]@*ToLowerCase)]

Note that ToLowerCase does not evaluate if the input is not a string, but it is Listable, so it will thread over your list:

list = {1.234, a[2], {"Abc", 4/5}, "acb"};
ToLowerCase[list]

(* Out: {ToLowerCase[1.234], ToLowerCase[a[2]], {"abc", ToLowerCase[4/5]}, "acb"} *)

That should not bother you though; it certainly does not bother Position:

Position[ToLowerCase[list], "abc"]
(* Out: {{3, 1}} *)

Recall that StringMatchQ[] has the IgnoreCase option:

Position[{1.234, a[2], {"Abc", 4/5}, "acb"},
         s_String /; StringMatchQ[s, "abc", IgnoreCase -> True]]
   {{3, 1}}