Formatting
There is nothing wrong with a nested conditional continuous assignment, but there are ways to make it more readable:
assign a = (b) ? '1
: (c&d) ? '0
: (f&h) ? '1
: '0;
However, this is still an "if...else if...else if...else" structure, and a question you should ask yourself is what is this code meant to do and how it would 'read'. The above may be easier to read (while synthesizing same code) if it is code using an always and ""if...else if...else if...else" structure.
Here is an example of a clean use of the nested conditional continuous assignment:
assign a = (state == STATE1) ? '1
: (state == STATE2) ? '0
: (state == STATE3) ? '1
/* default */ : '0;
Readability
Do consider, that your shown form may save time in the original typing of the code, but there is much higher value in having your code readable. Be it yourself, or another designer, looking at the code a year or more later will appreciate a form that allows them to quickly grasp what the logic is doing.
Coding can be sped up without loss of readability by using an editor that supports auto-expanding snippets (or abbreviations). I use vim with abbreviations that really speed up all block structure entry, and alignment scripts that allow me to vertically align given character (like "=" or "(") or string in selection.