The amount or fat content of the milk is immaterial to your problem and only affects the viscosity and/or richness of the sauce (lots of skim will make a runny and non rich sauce while a little heavy cream will make a thick and rich sauce… you see my point I’m sure).
The roux is not relevant to your problem either. Once the flour particles are coated in fat, the roux is made and ready to do its job. This happens as fast as you can stir the two together, sometimes in as little as a few seconds. Cooking the roux does two things. You should cook the roux for two or three minutes no matter what just to get rid of the raw flour taste, but beyond that more cooking creates a darker and more flavorful roux but the longer you cook it, the less thickening power it has. For a cheese sauce, you want it to thicken, so create a roux and cook only a few minutes. Remeber that a roux does not reach its full thickening potential until a full boil is reached after you add the liquid (milk).
Your problem is that the bechemel/white sauce (butter + flour = roux and roux + milk = white sauce) was too hot when you tried to add the cheese and it “broke” making it gritty.
Here is my solution. Get an appropriate sized pot. Add some butter and melt it gently. Add an equal portion of flour to the butter and mix together. Heat at a gentle simmer for about 3 minutes - don’t burn it. Add the milk, crank the heat, stir, and wait for it to come to a full boil. Remove the pot completly from the stove and let it stand for a minute. Start adding the cheese in very small increments. Stir each increment in until it is melted before adding the next little bit. If the sauce gets to cool to melt the cheese, return it to the stove for just a moment until it heats up enough to melt more of the cheese you are adding then take it off the heat again.
The type of cheese does not matter. A traditional nacho cheese sauce would be made from a young cheddar or american or Velveeta type cheese.