1) What is the hashing algorithm called used in Bitcoin?
The hashing algorithm for Bitcoin is called SHA-256, Secure Hashing Algorithm 256. SHA-256 takes in an input string of any length and produces an output of a fixed length. No matter how small or big the original input, the output will always have a fixed length of 256 bits length.
2) Why is this hashing algorithm really hard (almost impossible) to brute-force?
If you attempted to use the brute-force method by randomly selecting an input, hash it and then compare the output with the target hash and find an exact match, on average it would take you 2^127 times to get a match. That is a huge number which means that it would take you an extraordinary amount of time to find a match. Moreover, if there is even a small change in the input at any given time, the hash output would change dramatically to make it almost impossible to find the match.