Each of these options has several ramifications. The choice depends on your skills, the project that you aim for and, for the first option, the work you want to invest into it.

A simple model that fits typical map-based games, where the collision shapes are only axis-aligned rectangles (that is, rectangles with only horizontal or vertical sides), only requires a function for rectangle intersection and simple coordinate adjustments.

For the second option, if you need more fine-grained collision resolution, but still with axis-aligned rectangles, then I'd suggest you look into bump.lua. If you need more complex shapes, but no sophisticated collision resolution, you can look into HC. And if you want a full physics simulation, Löve includes the love.physics module.