Hola cotolon, te contesto
1. Si se puede hacer lo que dices, y tal como mencionas se puede hacer con punteros y memoria dinamica, busca informacion sobre listas enlazadas ordenadas
2. No se en que forma estas usando fscanf, porque fscanf no hace un salto de linea automatico, sino que en realidad funciona tal como quieres que funcione, o sea, que trata los espacios y los salto de linea como separador entre datos.
Te dejo un programa que escribe los 11 numeros de tu ejemplo en un archivo de texto, los lee en un vector, y luego imprme el vector en pantalla, funciona en Visual C++, pero no creo que tengas problemas con otros compiladores:
#include <cstdio>
int vector[11];
FILE * pFile;
int i;
int main()
{
pFile = fopen ("archivo2.txt","w+");
fprintf(pFile, "2 5\n");
fprintf(pFile, "3 3 4\n");
fprintf(pFile, "5 5\n");
fprintf(pFile, "6 10 8 6\n");
rewind (pFile);
for (i=0; i <= 10; i++)
fscanf (pFile, "%d", &vector[i]);
fclose (pFile);
for (i=0; i <= 10; i++)
printf("%d ", vector[i]);
printf("\n");
return 0;
}