There are times when a cursor is the right tool to use. There are other times when it's better to retrieve an entire query, and operate on it as a set.
SQL has a lot of set oriented operations built into it. For example, an UPDATE can operate on an entire set of rows from a table. If there's a WHERE clause, those are the rows that will get updated. The update can use context sensitive subqueries and CASE constructs to provide a lot of flexibility in terms of updating different rows in seemingly different ways.
Expressing a monumental data transformation as a single UPDATE can seem like a daunting task to a programmer who is just coming up to speed on SQL. It's so much easier to declare a cursor, loop through the rows returned, treat each row as a record, and revert to one record at a time processing. As long as your involvement with databases remains "lite", that may be good enough for you.
But if you expect to build industrial strength databases, it behooves you to learn how to manipulate data in terms of sets of rows, and not just one row at a time. You'll get better performance. Perhaps more importantly, you'll get better clarity about the relastionship between the underlying business rules and the code you've written.
It's much easier to operate on sets of data in a well designed database than in a poorly designed database. If you're just coming up to speed on database design, and just coming up to speed on SQL queries at the same time, you might want to get a mentor to advise you on your database design. If you don't do that, you may have a hard time learning the power and simplicity of set oriented operations.
And, there are still times when you'll use cursors.