Quite interesting how I had a very similar problem early this week!
So, here's the shorter answer:
Use a responsive grid with consecutively lower number of columns as the device's screen becomes smaller. To ensure that all scenarios are catered for you can then double the number of vertical grids by the actual number of grids that you plan for. Make sure that you set a gutter with of multiples of 8px and that the margins are also in multiples of 8px.
Most modern design software like Sketch or Figma will calculate the required grid sizes accurately for you so that life becomes easier even translating to code.
Onto the actual grids themselves, plan for the smallest grids, in this case the 375px viewport is ideal for mobile, 768px for tablet and 1440px size is ideal for desktop. Next, use the max-width rule, ie the designs for 375px will apply to all screens equal to and less than 375px, the designs for 768px will apply to all screens falling from 768px to 376px viewport width, while the 1440px rules will cater for all screens falling from 1440px - 769px viewport width. I typically like to design one more layout which is 1440px +, which is for all screens larger than 1440px. The larger than 1440px layout typically uses responsive fonts-sizes for looser control and easier legibility from large screens.
Thus I end up with 4 layouts.
I know it may sound boring and un-inspired, but try to simplify your design by initially using wireframes with big blocks to try to envision how the content would react to a shrinking viewport size in a way that makes sense.
Bonus tip:
You can use responsive font-sizes but I would recommend resizing according to break points in strict multiples of 4px for font-sizes and and line-heights.
You can also employ responsive svgs for icons, making sure that that total areas covered by the icon units are in multiple of 8 or 4, ie 16px by 16px of 24px by 32px. the actual drown icons itself should be ideally be in multiple of 4px.
This strategy can make text and icons to look sharper on screens.
On this: Since these layouts cover MOST of the ground, do devs usually just tweak the design a small bit when something doesn't fit?
The answer is yes. Well, at least for the Devs I've worked with.
Calculating accurate, responsive rules for grid sizes that accurately match the sizes in CSS can get tricky. He has a solution that can get you started on the journey to finding yours: stackoverflow.com/a/20457076/1811992