Why over_Var(1, 'm'); is not ambiguous
1 is an integer. It can't be passed to a parameter of type Character or char directly (without casts), so the only option is the (float, Character...) overload. There does exist an int to float widening primitive conversion, which is permitted in an invocation context.
You might have thought that 1 could be converted to a Character because you can do that in assignment contexts.
Character a = 1;
However, this is purely because in the "Assignment Contexts" section of the JLS (see above link), there is this part that begins:
In addition, if the expression is a constant expression (§15.28) of type byte, short, char, or int:
[...]
The section for invocation contexts does not have this paragraph. So in reality, assignment contexts give constant expressions (like 1) special treatment, allowing them to be converted to smaller types than they actually are. Invocation contexts do not do this.
Why over_Var('k', 'm'); is ambiguous
In this case, both overloads are applicable. 'k' is a char, and the conversion from char to float (widening primitive conversion again) is allowed in an invocation context. The conversion from char to Character is also allowed in a loose invocation context.
If there are multiple applicable methods, the compiler chooses the most specific one. Which is more specific? Well, the second parameter of both calls would be Character, so we just need to consider the first parameter's type. One's float and the other's Character. Which one of these is more specific depends on their subtyping relationship. According to the subtyping rules, they are unrelated, so neither is more specific, and so you get a compiler error.
This is a simplification of the entire section of 15.12.2 of the spec, which I strongly encourage you to explore yourself :)
Why changing to char works
Unlike float and Character, float and char actually are related! Specifically:
double is a super type of float
float is a super type of long
long is a super type of int
int is a super type of char
int is a super type of short
short is a super type of byte
So char is a subtype of float, so over_Var(char...) is more specific than over_Var(float, char...), and hence will be preferred.
Some ways to resolve the ambiguity
To call (float, Character...), you can just cast:
over_Var((float) 'k', 'm');
To call (Character...), you can pass in a Character[].
over_Var(new Character[] {'k', 'm'});