Question: What is a good attitude from developers when discussing new features, and namely, non critical/questionable features?

Say you are developing some sort of Java like language, and the boss says: "We need pointers so that developers could fiddle with object memory directly!"

Should the developer shoot down the idea because it adds unimaginable complexity and security vulnerabilities, or should he do what's asked?

This may not be a good example, but what about things that are more in a gray area, like adding buttons that break workflow, or goes against internal structure of the program, etc.?

What is the optimal "can do" vs. "can't do" distribution for a regular programmer?

EDIT: The question is not about a bad boss :D

I was more interested how do people approach new problems that add a noticeable amount of problems while maybe being marginally useful.

Should the general attitude be:

1. yes we'll do it, screw the complexity
2. maybe
3. no, the general rework, and implications don't justify the change

What should be the reaction of a good developer?

Answer: 
If I read you correctly, the real question is about unknown complexity. Initially I read your question as, "I see the extremely likely risk of excess complexity but the boss doesn't" But you're saying that the boss isn't a problem, so I take it you're not sure what the risks of adding unacceptable complexity are.

In that case, I'd recommend some sort of risk mitigating strategy. Image you're considering adding WCF/web services to your API, which could be awesome or a lot of complexity without reward:

* add the feature on a branch. If it works, merge it. If it turns into a rats nest, kill it.
* fire up a new one page project and do a proof of concept. If you can't do a proof of concept in a short time, then drop it. If the proof of concept works, make it bigger and integrate it with your
* scour the web for people griping about that feature or technology. Where there there is a lot of griping going on, a technology might be some real risks of excessive complexity. Java Beans and COM+ are probably, old, but good examples of features that really jacked up the complexity and may or may not have delivered on the benefits side of the equation
As a developer, you shouldn't really care which requirements are requested to be implemented.

However, you should explain if something is unrealistic and if there are better ways.