Blocking code in Task of FreeRTOS
It depends a little bit on what you're implementing but as mentioned in the comments as tasks usually handle/emit reocurring events they all should contain an infinit loop so this is not a don't.

What you should keep in mind when introducing multiple tasks is the required processing time and the fact that a context switch requires resources and processing time as well. To reduce unecessary context switching you shouldn't use normal wait loops in your tasks as you might would do in a normal single threaded application, use the delay functions provided by the FreeRTOS instead to set the task asleep.

Further, as you cannot control when a context switch happens, don't forget to protect any shared resources with mutexes.