Yes, ICMP traffic will pass. But all other traffic (e.g. TCP, UDP) won't. This is because the default action for a term is to accept traffic. Term 1 in your filter accepts all matched traffic (ICMP) that isn't affected by the policer. Other traffic will not match term 1 and is discarded by the filter. Your current filter in effect looks like this:
filter INCOMING_ICMP_FILTER {
term 1 {
from {
protocol icmp;
}
then {
policer limit-icmp;
accept;
}
}
term 2 {
then {
discard;
}
}
}
That's why you need the default accept in order to allow traffic not matched by term 1.
If you're looking to protect the routing engine, it is probably better to put this filter on the loopback interface lo0. That way, it doesn't make a difference from which interface the traffic is arriving.
The reason that the command 'show firewall filter INCOMING_ICMP_FILTER' does show 0 bytes is probably because you didn't generate enough ICMP traffic to hit the policer.
Regards,
Steven