The two words have overlapping meanings, so there are contexts where either one could be used. However, there are certain constructs where one would be regarded as much better than the other.
I'm not sure if I can provide an exhaustive list of contexts where you should use might instead of could, or vice versa. Let's start with the example you provided, which is when either word is followed by not.
The phrase might not indicates a possibility that the contrary could happen. The word cannot suggests that the contrary won't happen. And the phrase could not suggests that the contrary wasn't able to happen.
He might not show up.
means that he might show up, but we're starting to think he may not, while:
He could not show up.
suggests that, because of some obstacle, he was not able to make it.
Let's say we're supposed to meet Mike at 8 o'clock, and it's now 8:20. We have no idea where Mike is. I might say:
Let's not wait any longer. He might not turn up.
However, just before I finish my sentence, my cell phone rings. It's Mike! Mike tells me that his flight is delayed; the airplane is having mechanical problems, they haven't even left the runway yet. Mike is 500 miles away. Now, I say:
Let's not wait any longer. He cannot be here; he's stuck in Memphis.
Next, my friend and I leave, and we go to Ted's house. Ted sees that Mike his missing, and asks, "Wasn't Mike coming with you guys?" I might reply:
We waited for him, but he could not be here. His flight got delayed.
This is because, while might infers a possibility, could can infer a possibility, or an ability. Let's say you set a bar a meter off the ground, and ask me if I'm able to jump over it without touching it. I could say:
I might be able to do that. (it's possible)
But now you raise the bar two meters off the ground, and ask me if I can jump over it. I might say:
There is no way I could do that. (it's impossible)
However, there are times when the words could be used interchangeably, as you have sensed. For example, let's say we're leaving the house for a few days, and we're trying to decide whether or not to leave the furnace on. I might say:
Let's make sure the furnace gets turned on before we leave. We might get some cold weather.
Let's make sure the furnace gets turned on before we leave. We could get some cold weather.
In that context, the two phrases mean essentially the same thing.
Now, an interesting example for the advanced reader. Consider these two statements:
The repairman might come today, but he could come tomorrow.
The repairman could come today, but he might come tomorrow.
Is there a difference? I'd say that both of them mean that the repairman is supposed to come either today or tomorrow, although there's a little uncertainty as to which day he will arrive. But does one of them suggest a higher probability one way or the other? I don't think so, at least not reliably.