How to set which decals to accept?

Just as it used to be in UDK / UE3.
Is there a way to set a certain decal to not cast on a particular object type, say one decal cast only on static mesh but not on skeletal meshes and another decal casts only on skeletal meshes and not on static ones.

You can only turn off Rendering/Receives Decals in components. (The decal system works very differently in UE4 than in earlier versions.)

is there no way to set is such that I want decal A to cast on a particular component but not decal B?

Not that I know of. The reason lies in how decals are handled in a deferred renderer.
In UE3 decals needed to generate extra geometry covering the underlying surfaces like this:

This work involved the CPU so it had information about the game world and thus could use more elaborate logic to decide how to create the necessary polygons.

However with deferred rendering much of the work is done in internal textures, buffers where all the surface data is collected before calculating the final color of a pixel. Decals are rendered into those buffers to modify them which means that they can’t easily tell where a pixel is coming from. With an additional buffer some sort of filtering can be achieved but it might not be worth it in a generic game engine due to the performance impact and increased memory consumption. However you could probably extend UE if this is a critical feature for you.

Here is a good article on the topic:

hey guys, please check this forum post:

https://forums.unrealengine.com/development-discussion/rendering/1540297-can-we-not-apply-a-decal-to-a-single-actor

it will help you i guess.