I think the fact that it was a 10 second game had something to do with it.
Why am I being given so less (+2) pts when I won against a 2781??

But the rating difference was high. Do the players not get points when winning against each other. On a side note, when I saw two 3100s battling in 10 sec chess, one was gaining +8 whenever they won a game. Why did you think that happened?

Now when a 2300 wins a 2700, why isn't the 2700 punished a lot for it? Why don't they take away 15 points from him?

https://www.chess.com/forum/view/general/ultrabullet-rating-changes
thread asserts that they made some ratings formula adjustments for ultrabullet back in 2021. I didn't see confirmation anywhere else, however

Also, ratings here use the Glicko system, which includes a statistical ratings valuation. So ratings change indicated by the ratings differential may be limited by the RD factor.
https://www.chess.com/game/live/138737357594
I won a 2781, but the system only gave me +2. Why did it do so? I'm curious.