even general chess advice would be appreciated.
Game Analysis
4. Nc3: I always play 4. c4 against this black set up. If black wants to challenge my trio, I usually end up gaining a couple tempi or I expand on the queenside.
8. Bg5: I would think the bishop on f4 is there to prevent black from playing e5. In this light, 8. Bg5 is a waste of a tempo. Your bishop ended up behind a wall of black's pawns.
9. d5: When I have more space and I'm dictating the flow, I just keep expanding and wait for black to make a mistake. If they play passively their pieces end up being cramped.
17. Nc4: This looks like a loose move to me. You're attacking a pawn that could easily be defended and in the process help black improve their position. 17. Nxf4 looks like you grab a pawn. If black thinks they can fork your knight and bishop with g5, then they are in for a surprise. After 17. Nxf4 g5, 18. Nxh5 looks winning for white to me. If black wants to brawl it out and plays 18. ... g5xh4, you take their bishop with check and your knight can retreat via e6 or f5.
On move 21 you missed a fork between the king and queen. You would’ve taken his queen for a knight if you had moved your knight to e7.

On move 21 you missed a fork between the king and queen. You would’ve taken his queen for a knight if you had moved your knight to e7.
Look again... the knight on c6 guards e7 at that point.
so should I have kept my knight on c6 or would it have been more in the French to have originally played c5? In other words, was 5... Nc6 really the move not in the French line?

The opening was odd. ...c5 should have been played when ...Bc5 was (move 3 for Black). White dropped the pawn. Also, 5...c5 rather than ...Nc6. After that you got bottled up and got lucky that your opponent dropped his d-pawn.
19...Bd7 was a blunder and your opponent could have turned the tables with 20.Rxf5! which wins a piece because of the zwitschenzug (21...Qxc3 Rxf8+).

No, it is an "in-between move" -- switschenzug. A desperado is a trapped or hanging piece that makes a desperate bid to take out as much material as it can before it dies. In a zwitschenzug, there is a move inserted instead of the expected immediate recapture.
In the game given, if White had played 20.Rxf5 it takes away the protection of Black's Queen so Black exchanges Queens, but then White has a capture with check "in-between" the expected recapture of the queen. 20.Rxf5 Qxc3 21.Rxf8+ Rxf8 22.bxc3 and White is a up a knight.
Petrosian-Fishcer 1958 has an example of a desperado:
White (Petrosian) just played 12.Nxe5 taking a pawn with a discovered attack on the h5 knight. Fischer played the desperado capture with his hanging knight 12...Nxg3.
The opening was odd. ...c5 should have been played when ...Bc5 was (move 3 for Black). White dropped the pawn. Also, 5...c5 rather than ...Nc6. After that you got bottled up and got lucky that your opponent dropped his d-pawn.
19...Bd7 was a blunder and your opponent could have turned the tables with 20.Rxf5! which wins a piece because of the zwitschenzug (21...Qxc3 Rxf8+).
I agree about the opening, c5 is definitely the move. Also, I completely missed that tactic, thanks for pointing it out.

....c5 is a recurring thematic break in the French for Black. There are only a couple of sidelines where Black intentionally blocks the c-pawn -- such as the so-called "Fort Knox" variation.
Black's problem in the French is how to develop his QB. The Fort Knox variation solves this problem in an interesting way... but it costs a lot of time. Other than sidelines like this, Black almost always relies on the ...c5 break against White's d-pawn in the French.
Interesting.
One problem I seem to have is that I don't know much opening-specific theory. I know develop, castle, etc., but I don't know how to do that in each specific opening.(move order, positional ideas, etc.) any suggestions?

At your level I think it is better to know and apply opening "principles" rather than opening "theory." "Theory" in chess is not ideas -- it is just a series of moves.
Basic opening principles involve controlling (or contesting) the central squares. Time (tempo) is also very important. You want to develop your pieces and work them in harmony toward that goal of central control. Don't develop your pieces so that they will be pushed around by pawns in the opening.
If you like the French Defense then you might consider purchasing "Starting Out: The French Defense." The Everyman Chess publishing company series "Starting Out" gives idea overviews of major openings.
But... you may want to look at some games by stronger players using the French Defense to see if this opening reaches positions you like or dislike. Don't pay money for a book and then decide you will not play that opening!
Every major opening is good for players ... especially low level and even higher level club level players.
Use one of the many "opening explorer" online options (like the one here at chess.com) and look over a few games.
Anyhow, I think the "Starting Out" series of books from Everyman are great to learn basic ideas of a typical opening/defense. There are many books in that series. You can get them in print and many of them are available as e-books. Just google "Everyman Chess" and then search for "Starting Out" on their site to get an idea of what they have available.
yes, I see thanks. would you mind analyzing another game? Input from higher rated players is always helpful.