Hardware terminals offer the convenience of everything in a single package: swipe, chip reader, printer. A virtual terminal offers more flexibility, however, because it can be used from most any device, and in almost any situation where you have access to the internet and a browser, including mobile devices running Android and iOS / iPadOS.
However, a virtual terminal is just that, virtual, and you input the card rather than swipe it or read the chip. This typically means the transaction processes as card-not-present, and is therefore charged a slightly higher interchange rate than for a similar card-present transactions. You can get around this by adding a card reader to your virtual terminal setup: either a USB swiper for desktops, or a Bluetooth swiper and chip reader to a mobile device.