I was having some similar issues (also a bit new to HA, YAML, etc.) and finally figured out a workaround to extract full weather data by using Attributes within the Trigger Template Sensor. Maybe this can help you or the next person to stumble upon this thread…
The key here is that the number of characters in an Entity’s State is limited to something like 250, but this is not the case for an Entity’s State Attributes (or at least it’s a much higher limit). Outputting the full forecast data into an Attribute, instead of the State, allows me to keep the templates.yaml file minimal and gives me freedom when creating other Template Sensors, as I can test and see the outputs in the Template section of the DevTools menu without having to create dummy datasets.
Here’s the code I included in my templates.yaml file to get started:
- trigger:
    - trigger: time_pattern
      seconds: "/10"
  action:
    - action: weather.get_forecasts
      data:
        type: hourly
      target:
        entity_id: weather.forecast_home
      response_variable: hourly
  sensor:
    - name: Weather Forecast Data
      unique_id: weather_forecast_data
      state: "{{ hourly['weather.forecast_home'].forecast[0].datetime }}"
      attributes: 
        fcdata: "{{ hourly['weather.forecast_home'].forecast | to_json }}"
Note that my time pattern is set to every 10 seconds “/10” - this was just to ensure data loaded quickly when testing, in reality it can be hourly or longer.
Once that’s in your templates.yaml file (for formatting, the very first line has no indent in that file), you can open Template tab in DevTools and try out the code below as an example. This may not be the most efficient way to do this, but it’s what I could make work.
{#- PARSE WEATHER FORECAST FOR TEMPS -#}
{#- Declare empty lists to append to -#}
{%- set temps = namespace(forecast=[], today=[], night=[]) -%}
{#- Loop through the 24 hourly forecasts -#}
{%- for item in state_attr('sensor.weather_fc_data', 'fcdata') -%}
{#- Build list of all forecast temps -#}
  {%- set temps.forecast = temps.forecast + [item.temperature] -%}
  {#- Set date_time to today's date and build list of temps on today's date -#}
  {%- set date_time = item.datetime | as_datetime | as_local -%}
  {%- if date_time.date() == now().date() -%}
    {%- set temps.today = temps.today + [item.temperature] -%}
  {%- endif -%}
  {#- Build list of nighttime temps only (from 10pm to 8am) -#}
  {%- if date_time.hour<8 or date_time.hour>=22 -%}
    {%- set temps.night = temps.night + [item.temperature] -%}
  {%- endif -%}
{%- endfor -%}
{#- Process output lists ot get helpful data like highs and lows -#}
{%- set forecast_high, forecast_low = temps.forecast | max, temps.forecast | min -%}
{%- set today_high, today_low = temps.today | max, temps.today | min -%}
{%- set night_low = temps.night | min -%}
Today's High: {{today_high}}
Nightly Low: {{night_low}}
Edit to add: This is for the default Met.No Weather Integration.