I'm trying to figure out the best approach to this (using GDScript) in keeping with Godot's design philosophy:

Let's say I want to create a card game and store all the card data in JSON files. Imagine this is for a game like Reigns, where there are a large number of cards and we want to filter the total set before random selection based on on-the-fly considerations. Are the cards best represented as a large group of instanced scenes? Or should I load them into dictionaries/arrays as resources for sorting and picking, then transfer the card data into instantiated scenes only when they're needed in action?

I'm new to Godot and only a novice programmer, so any help with what the code for loading and data mgt should look like is also appreciated!

I don't know if it will help you, but here I share with you my script to load and save game:

extends Node
var archivo = "user://if_eternity.text"
var diccionario = {
	idioma = Universal.idioma,
	control_niveles = Universal.niv_desbo
}
func _ready():
	pass # Replace with function body.
func _Save_game():
	var save = File.new()
	save.open(archivo,File.WRITE)
	var new_partida = diccionario
	new_partida.idioma = Universal.idioma
	new_partida.control_niveles = Universal.niv_desbo
	save.store_line(to_json(new_partida))
	save.close()
func _load_game():
	var cargar_juego = File.new()
	if not cargar_juego.file_exists(archivo):
		return
	cargar_juego.open(archivo, File.READ)
	var new_partida = diccionario
	while !cargar_juego.eof_reached():
		var datos_provisionales = parse_json(cargar_juego.get_line())
		if datos_provisionales != null:
			new_partida = datos_provisionales
	cargar_juego.close()
	Universal.idioma  = new_partida.idioma
	Universal.niv_desbo = new_partida.control_niveles

JSON is one option, but you can also use CSV files (comma separated values). I did this for a sort of card game prototype I was working on. The advantage is that you can design the stats and skills or whatever in a spreadsheet (using Excel or LibreOffice Calc) export to CSV and then parse it as a Dictionary in Godot. It adds some extra steps, but it is MUCH easier to edit a spreadsheet by hand than to edit JSON or XML.

[unknown] Yes, I love doing that kind of design in spreadsheets, and was considering converting CSVs to JSON pre-load. Skipping that step (and a separate python script) sounds even better.

In your project, did the dictionary live as a resource separate from a scene? How to structure that stuff / what to use when is something I am still wrapping my head around.

I think I used an autoload that just parsed the CSV and stored it as a global Dictionary.