I'll try to give an explanation on forex pairs. The asset being bought in a buy trade is the quote currency, USD in EURUSD pair. You buy this with the base currency, EUR in EURUSD pair. So if you "buy" 1 USD with 0.9 EUR, the price increases to 1.0 EUR and you sell it (close buy trade), you made 0.1 EUR. The opposite is true with sell trades, you "sell" 1 USD that you don't own so now you owe 1 USD but have 0.9 EUR on hand. The price moves down to 0.8 and now you buy 1 USD at that price to fulfill what you owe, you're left with 0.1 EUR profit.
You are correct in para 2. For all leveraged CFDs, not only forex but commodities, indexes, cryptos, etc., you're buying an agreement (basically a gambling ticket) for the price of the underlying asset to move in a direction.
Liquidity providers (market maker) broadly means anyone who offers to make a trade. For you to "buy" $1 mil USD with your EUR, someone needs to sell it. Your broker connects you to their whole network of liquidity providers; banks and other traders. In essence, everytime you make a trade, someone somewhere takes an opposite trade. This may not happen 1:1 as in if you make a 0.45 lot trade there's not another 0.45 lot out there. Your broker consolidates and fills existing offers (market taker) to fulfill your order. If there is not enough offers to fill your order, the next worse priced offer is taken and slippage occurs. Price moves up if more orders are buying up existing offers to sell and moves down if the reverse occurs.
I think that's generally what happens with all the relevant parties when you make a forex trade.