The first option is the better option. Here you are retrieving a list of required objects that you need to work on using one query.
In the second option, you are retrieving a list of all objects of that entity which are not required and are creating another list in memory with a lot of duplicate objects. These objects are all transferred to the client and stored in client memory unless dealt with appropriately.
This will be very clear if all the objects of a single entity are in millions and all you want is a small chunk, it is wise to retrieve only required objects instead of using up all memory and causing Out of memory error.