What voting methods does this site use?

All single winner elections are calculated using the Schulze Method, arguably the most popular of the Condorcet methods. Multiple winner elections are provided the option of using Schulze STV, Schulze PR, or an iterated non-proportional version of the Schulze Method.

Method definitions and analysis are available in full detail (1, 2), though Wikipedia's summaries may well be sufficient (1, 2). Python implementations are available for your perusal at Github and are released as open-source under the GPL.

What are the upsides to using these methods?

The elections are immune to the spoiler effect, giving third parties and compromise candidates a better chance. Precisely, the results will provide a Condorcet winner if one exists; Alternative methods like Instant Runoff Voting can't make this guarantee.

The ballots used are more expressive than the standard first-past-the-post single-choice ballots. At the same time they're simple enough to use, piggybacking on to the common 5-star rating method used in popular culture.

Again, Wikipedia provides a more in-depth analysis of the satisfied properties (1).

What are the downsides to using these methods?

It's overkill in an election with only two candidates. It still works, but a simple show of hands might be easier.

The complexity, while automated in a transparent way, may be off-putting to voters that want to understand the algorithms.

Single winner and non-proportional orderings are easily calculated with a practically unlimited number of candidates, but proportional results can be slow when the number of candidates grows too large. If you need a proportional result with more than 21 winners, I'd suggest looking into something more like mixed-member proportional representation.