I understand. but this would be kind of reading the future.
Well, that is what it is. But you can read the future. If you have the falling velocity of your character, you know that the next frame your character's y position will be set to y + vertical velocity, because that's how you're calculating it in your physics code anyway (or at least so I presume).
What do I have to do if I predict that it actually can collide? reduce the speed? in the webpage you gave me it says do more simulations if you detect a problem could happen but this would change the repetibility of events and I'm not sure I want that
I didn't read the rest of the page, so I don't know if the rest of the information there is useful. Maybe I should have just linked the image. Sorry about that.
If you predict that it would collide then you call your normal collision code as you are already doing when your current code detects a collision.
What if something happens (my character get hits with an enemy shot) and actually I was never going to land there anywhere?
That's up to you. If you check all collisions before you update and find both a collision with the ground and a collision with a bullet at the same time, you will have to write your own code to decide if one collision is more important then the other and perhaps not even handle the other one.
You should probably handle both, however, and first treat the collision with the ground and push the character back up and then check whether the bullet hit after that.
If you want to get really complex, tho, you can calculate which collision happened first and make your decision based on that, but you should probably make it simple first. Fix the ground bug to begin with and then move on to this sort of stuff.