Your example seems pretty clear to me: It is your duty to raise a genuine concern at the earliest opportunity, because it is your job as a team to deliver the best solution possible within the constraints of your project. If your colleagues feel there is no problem or decide to ignore the issue, that's their responsibility, not yours, and they should be prepared to answer for their decision later on.
Similarly,
you should be prepared to answer for your decision to conceal an issue that you knew about before the code went into production, in the apparent hope you will get more credit for fixing it later on. Your suggested approach sounds like somebody who starts a fire so he can be praised for putting it out later on. Do you think anybody really wants to work with people like that?
If you can see a problem that your colleagues appear to have missed, it is your job to raise the issue in a constructive manner. If possible, try to have a suggested solution or at least some questions that you can all work on to find the solution. If it turns out they knew about the problem all along, then no harm done - and you may impress people with your problem-finding ability and responsible approach. If they missed it, they now have an opportunity to fix it or at least add it to the list of things to fix in the next release.