Firstly, from maths point of view, what are the prerequisites and what subjects do I get in the first 2 years? I understood that Linear Algebra and Discrete mathematics are very important! So can you name an example of a maths textbook I may get?
You want to select a textbook that "meets you where you're at" in terms of "mathematical maturity." Selecting too basic of a textbook will bore you, but selecting one that is too advanced will allow you to progress only at a suboptimal rate.
If you don't already know stuff that's in a typical discrete math course, I would suggest looking at this thread on Math.SE. My first Discrete Math course used Epp's book, but I found it somewhat basic.
If you already know some of what is covered in a typical discrete math course (e.g. elementary set theory, basic methods of proof, etc.--the stuff that would be covered in AoPS coursework), then I would highly recommend Graham, Knuth, and Patashnik's Concrete Mathematics. It is literally the book on math with respect to computer science theory. (If you learn everything in that book, I'd nearly guarantee you would know more math than 70-80% of CS students.)
However, graph theory and linear algebra are not covered in GKP's book. For linear algebra, I don't really know of a "great" textbook. For Graph Theory, I'd recommend looking at an algorithms textbook (CLRS's Introduction to Algorithms is really good), and perhaps going through this Coursera class and it's sequel. I learned so much in that course.
Also, take a look at Project Euler; it gives some fun math-based challenges that build quite nicely on each other. By solving those problems, I self-taught a ton of math from a very wide/eclectic basis.
Secondly, from a CS point of view, I already 'know' C#, F# and sometimes I play around with JS. Is it obligatory to learn ANOTHER language like python, java or c++? since knowing C# and F# already fulfils the 'need' of knowing different languages, F# with it's elegant functional-first programming paradigm and C# for imperative-first programming (technically, both F# and C# are multi-paradigm, which is awesome!)
To be more specific, I am into computer vision and ML. what textbooks do you think I may get in this area?
You'll probably be required to learn one of Java, C++, or Python depending on your school--most schools have a "favorite language" that they use by default in most of their classes. This "favorite language" is typically one of those three. (For example, University of Virginia uses Java as the language they assume all CS students know.) If you're really into computer vision, you'll probably want to learn C++; it's speed is important in that field, or so I've heard.
I wouldn't worry too much about learning other languages; having a foundation in a procedural and a functional language is great, and if you're comfortable with OOP, you'll be fine. When it comes time to use another language, you'll be able to pick it up really quickly with your background.