1. "Like the best" depends on what I'm doing.
.... For speed I like C.
.... For extreme speed I like C with critical sections in assembly.
.... For prototyping, testing algorithms, one-off programs to get an answer, I like Python.
.... For complex compiled applications, I like C++ for its templates in spite of other shortcomings.
.... For classic OOP and large systems, I tend to prefer Java in spite of performance issues.
C# is a strong contender in the last two categories, now that the Mono project has matured. I don't like the entangled IP issues, though.
2. "Most often" is probably Python.
3. "What to learn first" is whatever sticks. A high-level language like Python is more likely to do that for more students, but it's more important to get started with something that you'll keep at than to worry about what's best for someone else.
A high-level language makes it possible to get useful things done with less code. If you're not interested in coding at that level, it's unlikely that you'll enjoy lower-level coding much--but the converse of that may not be true. So, you might get some use out of a high-level language, even if coding as a profession is not in your future.