Was this sacrifice a good one? Upon reviewing a game I played. I started to feel bad about exchanging my attacking bishop for my opponent’s useless one. But I believe that I had no other choices. I want your opinion about what I should have done in this situation.

I am a 1200 rated player on chess.com

[FEN ""]

1.e4 e5 2.Nf3 f6 3.d4 d6 4.dxe5 dxe5 5.Qxd8+ Kxd8 6.Bc4 Nh6 7.O-O a6 8.a4 Nd7 9.Nc3 c6 10.b4 Bxb4 11.Na2 Bf8 12.Bd2 Nf7 13.Bxf7 Nc5 14.Ba5+ Kd7 15.Rfd1+ Ke7 16.Bb3 Nxe4 17.Rd8 b6 18.Bxb6 Rb8 19.Rad1 Rxb6 20.Rxc8


In the end I won by checkmate because he blundered. What I want to know is how should I handle positions where my opponent is just attacking my attacking pieces. Additionally, please try to find where my weak points are in the game.
Given that you are a piece up with a dominating position, exchanging the bishops isn't a problem at all. Note, that it is just an exchange, not a sacrifice.

You could have played 19.Bc7 instead, in that case black has to react 19…Ra8 or he will lose even more material (for example 19…Rb7 20.Rxc8 Kd7 21. Rxf8 with three pieces for a rook, which is a bit much …). 

Concerning your weaknesses: 

Only 10.b4 strikes me as truly bad, blundering a pawn and misplacing your knight. And 15.Nc3 would have prevented your second pawn blunder. 

So you won this game because your opponent blunders pieces whereas you only blunder pawns. Stop blundering pawns and you'll start beating those players that blunder pawns. And then we'll talk about why 2…f6 is a bad move and how to punish it.