While we're in COVID isolation, my group has been using roll20. My personal experiences:
What is needed to play is a map people can see with ways to add or hide things.
More importantly for me, a way for players to move their things on the map. I started out using jitsi.org for group teleconferencing with a webcam pointed at the battle map, but it was simply too confusing for the players to explain to me how they wanted to move their characters and what to target. It's a lifesaver to have a shared map where they can move their characters exactly where they want and see exactly where the baddies are.
Everyone being able to ping the map is also incredibly important. With roll20, each player has an assigned color, and can click the map for a sonar-style ping. So they can say "What do I see near [ping] that building?"
And while I mostly troll the Internet for art, it's extremely handy when the site itself provides a library of ready-to-use stuff.
A way to talk.
Not sufficient for me. We also want to see the other players. Not just for the social aspect, but also to know if the player is "at the table" when it's their turn. This doesn't need to be built in -- a separate zoom/skype/jitsi window would be fine.
A way to share pictures/art.
I don't share art at all.
And that is it.
The only reason for any of the other stuff is if your players are dishonest enough that you cannot trust them to roll their dice or keep track on of their character sheets.
I find a chat log that persist between sessions super handy. Being able to chat directly to a player instead of physically taking them aside is great. roll20 also lets me talk directly to one player (muting me and the player I'm talking to for everyone else).
Actually, now that I think of it, I might have shared a picture or two by posting a link in chat.
Dice rollers aren't needed, but:
The players like them, so why not? (I have three players who use the site, two players who roll on their table)
Having visible rolls isn't to prevent cheating, but to catch honest mistakes. At a shared table, someone will probably notice if you forgot to include a die. Or wonder why your numbers are so low. With a dice roller, someone will notice "dude, did you forget to include the +5 damage from your feat again?"
It's a time saver for me as the GM. If I can push a button to roll the attack/damage for the baddies, it speeds up combat so much.
To expand on the last point, I require some sort of macro system to make the button and it will do math for me. Partly this is because I'm a programmer by profession, and partly it's because I can't use integrated characters sheets, rulebooks, etc. I'm playing D&D 4e and roll20 doesn't support it.
If we were playing 5e, all that stuff would be integrated. When the site understands the rules and has full data on the characters from their sheet, the nitty gritty stuff is handled by the computer. Players can spend more time on tactics and roleplaying than worrying about math and resource tracking.
I still want players' character sheets, but we store them as PDFs in a google drive. If a player is absent one week, another can reference it. Also, the "crunchier" players can look them over and make optimization suggestions. E.g., "you might want to look at magic item X".
Actually, I use google drive for a bunch of documents associated with the campaign (like handouts), but that predates our use of roll20.
TLDR: I want a shared map where players can move their things, a map that supports pings, a chat log supporting whispers, and either a macro system or rules & character sheet integration. Video & voice is nice but can be a separate application. Likewise a place for shared documents or a campaign wiki.
YMMV. This is not an endorsement for roll20, which also has a lot of behavior that's incredibly annoying.