The best way of reading PWM signal is by using timer-counter in input capture mode. You run your counter at high frequency and program it for external interrupt. When signal on a pin changes current counter value gets stored in the input capture register. All this is handled in hardware, so your program is free to do whatever else you need. You have to handle interrupts to acquire that value and to prepare next capture at the beginning of the pulse.
How exactly you connect those PWM signals depends on MCU. Some of them have only one input capture pin, so you have to use multiplexor IC and cycle it through your sensors. Or you can look for MCU with enough input capture pins for all your sensors.
Even if you have to use single input and multiplex sensors you do not need to worry about different PWM frequency. You simply run counter as fast as possible (not too fast to get overrun, though) and calculate actual duty in software according to input being sampled at the moment.
If you asking about sending data, then it is completely different question.
First of all, you should clearly split data acquisition code from data transmission. Your sampling routines (especially ISRs) should not do any transmission, they should place all data into shared variables and forget about them.
Your transmission code then depends on the needs of your target recipient and available bandwidth only. For example, it can combine all data into one block and send this block every time. Slow data will be often sent unchanged, but the code will be very simple, on both transmitter and receiver.
Alternatively you can design your own protocol and send each parameter individually tagged by source ID. In this case you can send fast changing data more often. Ideally, the transmission frequency for each value will correspond to its acquisition rate, but since you've separated two layers your timing is flexible and you can finish previous transmission before sending next even if new data become available in the process.
In the end it is simple bandwidth calculation. Figure out how many bytes you can send every second given the transmission speed. Calculate how many blocks you can send and see if it gives you sufficient data rate per your requirements. If not, calculate individual data rates and see how many bytes you need to send per second (including tags) and sum them into total data volume. If it is still over transmission speed you are out of luck. If it is not you can go ahead and implement interleaved protocol.