Faits :
A.
Par jugement du 2 décembre 2019, le Tribunal de police de l'arrondissement de La Côte a condamné A._ pour violation grave des règles de la circulation routière, a révoqué le sursis qui avait été accordé à ce dernier le 19 avril 2017, et l'a condamné à une peine pécuniaire d'ensemble de 90 jours-amende à 50 fr. le jour.
B.
Par jugement du 5 juin 2020, la Cour d'appel pénale du Tribunal cantonal du canton de Vaud a rejeté l'appel formé par A._ contre ce jugement et a confirmé celui-ci.
La cour cantonale a retenu les faits suivants.
B.a. A._ est né en 1977.
Son casier judiciaire fait état d'une condamnation, en 2013, pour délit contre la LStup, ainsi que d'une condamnation, en 2017, pour violation grave des règles de la circulation routière.
B.b. Le 14 décembre 2018, sur l'autoroute entre Aubonne et Lausanne, A._ a circulé au volant de sa voiture. Alors que les véhicules roulaient à 100 km/h et que le trafic était dense, le prénommé a suivi de très près, soit à une distance maximale d'un mètre, sur une distance de 900 m, le véhicule conduit par B._, lequel roulait sur la voie de gauche et ne pouvait se rabattre en raison de la densité du trafic. L'intéressé a ensuite tenté de dépasser cette voiture par la droite, sans succès compte tenu de la circulation.
B._ a dénoncé A._ le 14 décembre 2018.
C.
A._ forme un recours en matière pénale au Tribunal fédéral contre le jugement du 5 juin 2020, en concluant, avec suite de frais et dépens, principalement à sa réforme en ce sens qu'il est acquitté, subsidiairement à son annulation et au renvoi de la cause à l'autorité précédente pour nouvelle décision, des indemnités à titre de l'art. 429 CPP devant lui être accordées, à raison de 2'183 fr. 85 pour la procédure de première instance, de 2'586 fr. 35 pour la procédure d'appel et de 2'500 fr. pour la procédure devant le Tribunal fédéral.

Considérant en droit :
1.
Le recourant reproche à l'autorité précédente d'avoir apprécié les preuves et établi les faits de manière arbitraire. Il se plaint en outre, à cet égard, d'une violation du principe "in dubio pro reo".
1.1. Le Tribunal fédéral n'est pas une autorité d'appel, auprès de laquelle les faits pourraient être rediscutés librement. Il est lié par les constatations de fait de la décision entreprise (art. 105 al. 1 LTF), à moins qu'elles n'aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, soit pour l'essentiel de façon arbitraire au sens de l'art. 9 Cst. Une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable; il faut qu'elle soit manifestement insoutenable et cela non seulement dans sa motivation mais aussi dans son résultat. Le Tribunal fédéral n'entre pas en matière sur les critiques de nature appellatoire. La présomption d'innocence, garantie par les art. 10 CPP, 32 al. 1 Cst., 14 par. 2 Pacte ONU II et 6 par. 2 CEDH, ainsi que son corollaire, le principe "in dubio pro reo", concernent tant le fardeau de la preuve que l'appréciation des preuves au sens large. En tant que règle sur le fardeau de la preuve, elle signifie, au stade du jugement, que le fardeau de la preuve incombe à l'accusation et que le doute doit profiter au prévenu. Comme règle d'appréciation des preuves, la présomption d'innocence signifie que le juge ne doit pas se déclarer convaincu de l'existence d'un fait défavorable à l'accusé si, d'un point de vue objectif, il existe des doutes quant à l'existence de ce fait. Il importe peu qu'il subsiste des doutes seulement abstraits et théoriques, qui sont toujours possibles, une certitude absolue ne pouvant être exigée. Il doit s'agir de doutes sérieux et irréductibles, c'est-à-dire de doutes qui s'imposent à l'esprit en fonction de la situation objective. Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence au principe "in dubio pro reo", celui-ci n'a pas de portée plus large que l'interdiction de l'arbitraire (<ref-ruling> consid. 1.1 p. 155 s. et les références citées).
1.2. La cour cantonale a exposé qu'il convenait de préférer la version des événements présentée par B._ à celle défendue par le recourant. L'intéressée avait fait l'effort de mémoriser le numéro de plaque d'immatriculation du véhicule du recourant, puis de se rendre au poste de police immédiatement après les faits afin de dénoncer sa conduite dangereuse. Le récit de B._ avait été clair, détaillé et traduisait un réel vécu. En outre, on ne voyait pas pour quel motif celle-ci aurait faussement mis en cause le recourant, qu'elle ne connaissait pas, alors qu'une telle démarche est propre à entraîner des désagréments, comme une perte de temps ou une confrontation avec l'auteur des agissements dénoncés. La prénommée avait paru particulièrement sincère lors des débats de première instance, notamment lorsqu'elle avait indiqué s'être trouvée dans une situation très inconfortable par le fait d'avoir été suivie de si près par le véhicule du recourant et avoir ainsi craint pour sa sécurité et même sa vie. Le recourant, dans le cadre de sa première audition, avait tout d'abord nié les faits qui lui étaient reprochés, alléguant avoir observé une distance appropriée avec la voiture de B._, avant d'expliquer que cette dernière aurait commis des fautes de circulation, notamment en omettant d'indiquer ses changements de direction. L'intéressé avait ajouté que, au moment où il avait dépassé B._ par la gauche, cette dernière aurait déboîté sur la gauche sans l'indiquer, qu'il aurait dû réaliser une manoeuvre d'évitement et qu'elle l'aurait ainsi mis en danger. Selon la cour cantonale, si les événements s'étaient réellement déroulés de cette manière, B._ ne se serait pas rendue au poste de police pour dénoncer le comportement du recourant.
1.3. L'argumentation du recourant est irrecevable dans la mesure où elle s'attache à l'ordonnance pénale ayant par la suite tenu lieu d'acte d'accusation, ou au jugement de première instance, dès lors que seule la décision attaquée fait l'objet du recours au Tribunal fédéral (cf. art. 80 al. 1 LTF).
Son argumentation est également irrecevable dans la mesure où elle consiste dans une libre rediscussion - totalement appellatoire - de l'appréciation des preuves à laquelle s'est livrée l'autorité précédente. Il en va en particulier ainsi lorsque le recourant revient sur la crédibilité de B._ et sur celle de ses propres déclarations, sans aucunement montrer quelle constatation insoutenable aurait pu être tirée, par la cour cantonale, de l'un ou l'autre de ces moyens probatoires. Contrairement à ce qu'affirme le recourant, le principe de la libre appréciation des preuves (cf. art. 10 al. 2 CPP) n'interdit pas au juge de fonder son état de fait sur les seules déclarations d'un témoin (cf. arrêts 6B_568/2018 du 29 août 2018 consid. 1.3; 6B_110/2017 du 12 octobre 2017 consid. 1.2.2).
Au demeurant, le recourant a bien présenté des explications fluctuantes, déclarant tout d'abord que B._ aurait commis des "fautes de circulation, notamment en oubliant d'indiquer ses changements de direction" (cf. PV d'audition du 10 janvier 2019, p. 2), puis expliquant que la prénommée lui aurait "coupé la route" - l'obligeant à freiner - et qu'il lui aurait ensuite "fait un signe de la main afin d'attirer son attention sur le fait qu'elle avait fait une manoeuvre dangereuse" (cf. PV d'audition du 18 juin 2019, p. 2). L'autorité précédente pouvait ainsi, sans arbitraire, retenir la version des événements présentée par B._.
Au vu de ce qui précède, le grief doit être rejeté dans la faible mesure de sa recevabilité.
2.
Le recours doit être rejeté dans la mesure où il est recevable. Le recourant, qui succombe, supporte les frais judiciaires (art. 66 al. 1 LTF).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
Les frais judiciaires, arrêtés à 3'000 fr., sont mis à la charge du recourant.
3.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 22 septembre 2020
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Graa